1

我将 Slim PHP 框架与 Joomla 结合使用。使用 Slim 框架,我正在创建一个 REST 服务,例如

$app->post('/api/users', function() {
    ..trying to instantiate class here..    
});

Joomla 使用该jimport()功能导入文件(jimport()链接到register());

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

因此,它不是直接包含文件,而是返回类数组,因此只有在实例化类时才会__autoload()调用 PHP 函数:

function __autoload($class)
{
    if(JLoader::load($class)) {
        return true;
    }
    return false;
}

所以这正常工作。当我在上面的匿名函数中实例化类时,问题就发生了,PHP 从不调用该__autoload()函数——因此从不包含该类。

是否可以在匿名函数内实例化时自动加载类?

4

0 回答 0