Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP uu autoload()不';当类从匿名函数内部实例化时,它不起作用_Php_Joomla_Slim - Fatal编程技术网

PHP uu autoload()不';当类从匿名函数内部实例化时,它不起作用

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()函数,因此

我正在与Joomla一起使用Slim PHP框架。通过Slim框架,我创建了一个REST服务,例如

$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;
}