[limb-svn] r6575 - in 3.x/trunk/limb/core: . tests/cases
svn at limb-project.com
svn at limb-project.com
Tue Dec 4 14:37:10 MSK 2007
Author: pachanga
Date: 2007-12-04 14:37:10 +0300 (Tue, 04 Dec 2007)
New Revision: 6575
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6575
Modified:
3.x/trunk/limb/core/common.inc.php
3.x/trunk/limb/core/tests/cases/lmbRequireClassTest.class.php
3.x/trunk/limb/core/tests/cases/lmbRequireTest.class.php
Log:
-- lmb_require static includes cache for modules with classes fixed
Modified: 3.x/trunk/limb/core/common.inc.php
===================================================================
--- 3.x/trunk/limb/core/common.inc.php 2007-12-04 11:26:06 UTC (rev 6574)
+++ 3.x/trunk/limb/core/common.inc.php 2007-12-04 11:37:10 UTC (rev 6575)
@@ -64,14 +64,14 @@
(strlen($path) > 2 && $path{1} == ':'));
}
-function lmb_require($file_path, $class = null)
+function lmb_require($file_path, $class = '')
{
static $tried = array();
- if(isset($tried[$file_path]))
+ if(isset($tried[$file_path . $class]))
return;
else
- $tried[$file_path] = true;
+ $tried[$file_path . $class] = true;
//do we really need this stuff here?
if(strpos($file_path, '*') !== false)
@@ -104,15 +104,8 @@
throw new lmbException("Could not include source file '$file_path'");
}
-function lmb_require_class($file_path, $class = null)
+function lmb_require_class($file_path, $class = '')
{
- static $tried = array();
-
- if(isset($tried[$file_path]))
- return;
- else
- $tried[$file_path] = true;
-
if(!$class)
{
//autoguessing class or interface name by file
Modified: 3.x/trunk/limb/core/tests/cases/lmbRequireClassTest.class.php
===================================================================
--- 3.x/trunk/limb/core/tests/cases/lmbRequireClassTest.class.php 2007-12-04 11:26:06 UTC (rev 6574)
+++ 3.x/trunk/limb/core/tests/cases/lmbRequireClassTest.class.php 2007-12-04 11:37:10 UTC (rev 6575)
@@ -46,6 +46,26 @@
$this->assertFalse(in_array($name2, get_declared_classes()));
}
+ function testLazyLoadSeveralClassesFromOneFile()
+ {
+ $module = $this->_rndName();
+
+ $name1 = $this->_rndName();
+ $name2 = $this->_rndName();
+ $path = $this->_writeModule("$module.inc.php", "<?php class $name1 {}; class $name2 {}; ?>");
+
+ lmb_require_class($path, $name1);
+ lmb_require_class($path, $name2);
+
+ $this->assertFalse(in_array($name1, get_declared_classes()));
+ $this->assertFalse(in_array($name2, get_declared_classes()));
+
+ $this->assertTrue(class_exists($name2, true));//triggers autoload
+
+ $this->assertTrue(in_array($name1, get_declared_classes()));
+ $this->assertTrue(in_array($name2, get_declared_classes()));
+ }
+
function testLazyLoadClassGuessNameFromFile()
{
$name1 = $this->_rndName();
Modified: 3.x/trunk/limb/core/tests/cases/lmbRequireTest.class.php
===================================================================
--- 3.x/trunk/limb/core/tests/cases/lmbRequireTest.class.php 2007-12-04 11:26:06 UTC (rev 6574)
+++ 3.x/trunk/limb/core/tests/cases/lmbRequireTest.class.php 2007-12-04 11:37:10 UTC (rev 6575)
@@ -46,6 +46,26 @@
$this->assertFalse(in_array($name2, get_declared_classes()));
}
+ function testLazyLoadSeveralClassesFromOneFile()
+ {
+ $module = $this->_rndName();
+
+ $name1 = $this->_rndName();
+ $name2 = $this->_rndName();
+ $path = $this->_writeModule("$module.inc.php", "<?php class $name1 {}; class $name2 {}; ?>");
+
+ lmb_require($path, $name1);
+ lmb_require($path, $name2);
+
+ $this->assertFalse(in_array($name1, get_declared_classes()));
+ $this->assertFalse(in_array($name2, get_declared_classes()));
+
+ $this->assertTrue(class_exists($name2, true));//triggers autoload, we try 2nd class first since we need to check how behaves static $tried cache
+
+ $this->assertTrue(in_array($name1, get_declared_classes()));
+ $this->assertTrue(in_array($name2, get_declared_classes()));
+ }
+
function testLazyLoadClassGuessNameFromFile()
{
$name1 = $this->_rndName();
More information about the limb-svn
mailing list