PHP uu autoload()不';当类从匿名函数内部实例化时,它不起作用
我正在与Joomla一起使用Slim PHP框架。通过Slim框架,我创建了一个REST服务,例如PHP uu autoload()不';当类从匿名函数内部实例化时,它不起作用,php,joomla,slim,Php,Joomla,Slim,我正在与Joomla一起使用Slim PHP框架。通过Slim框架,我创建了一个REST服务,例如 $app->post('/api/users', function() { ..trying to instantiate class here.. }); Joomla使用jimport()函数导入文件(jimport()链接到register()) 所以这正常工作。当我在上面的匿名函数中实例化该类时,问题就出现了,PHP从不调用\uuuu autoload()函数,因此
$app->post('/api/users', function() {
..trying to instantiate class here..
});
Joomla使用jimport()
函数导入文件(jimport()
链接到register()
)
所以这正常工作。当我在上面的匿名函数中实例化该类时,问题就出现了,PHP从不调用\uuuu autoload()
函数,因此该类从未包含在内
是否可以在匿名函数内实例化时自动加载类?如果
JLoader
类在同一文件中声明,则是。JLoader
称为fine-我说的是\uu autoload()
-它不会自动被PHP调用-这取决于您将此代码放在何处。顺便说一句,我不建议您使用\uu autoload
功能,因为此功能可以被覆盖。最好使用spl\u autoload\u register
函数。\u autoload()
是Joomla核心代码的一部分,所以我不想更改它,我正在尝试找到解决方法。
function & register ($class = null, $file = null)
{
static $classes;
if(!isset($classes)) {
$classes = array();
}
if($class && is_file($file))
{
// Force to lower case.
$class = strtolower($class);
$classes[$class] = $file;
// In php4 we load the class immediately.
if((version_compare( phpversion(), '5.0' ) < 0)) {
JLoader::load($class);
}
}
return $classes;
}
function load( $class )
{
$class = strtolower($class); //force to lower case
if (class_exists($class)) {
return;
}
$classes = JLoader::register();
if(array_key_exists( strtolower($class), $classes)) {
include($classes[$class]);
return true;
}
return false;
}
function __autoload($class)
{
if(JLoader::load($class)) {
return true;
}
return false;
}