LogicException错误:传递的数组未指定现有的静态方法

时间:2013-10-31 08:49:54

标签: php namespaces autoloader

这里要问我的自动加载器类/函数是否有任何错误与spl_autoload_register?

感谢您的帮助。

这是我的代码

<?php

namespace system\core;

// if(!defined('IN_APP')){
    // exit('Access Denied');
// }

define('ROOT', $_SERVER['DOCUMENT_ROOT']);
define('DS', DIRECTORY_SEPARATOR);

if(function_exists('spl_autoload_register')){

    spl_autoload_register(array('core', 'autoload'));

}else{

    function __autoload($class){

        return core::autoload($class);

    }

}

A:createapp();

class core
{

    private static $_app;

    public static function createapp(){

        if(!is_object(self::$_app)){

            self::$_app = 'something';

        }

        return self::$_app;
    }

    public static function autoload($class){

        $class = trim(strtolower($class));

        if(strpos($class, '\\') !== false){

            $path = ROOT;

            $path .= DS . $class . '.php';

            $path = preg_replace('/[\\|\/]/i', DS, $path);

            require_once($path);

        }

    }

}

class A extends core {}

我收到了这个错误

Fatal error: Uncaught exception 'LogicException' with message 'Passed array does not specify an existing static method (class 'core' not found)' in C:\xampp\htdocs\test\system\core.php:14 Stack trace: #0 C:\xampp\htdocs\test\system\core.php(14): spl_autoload_register(Array) #1 {main} thrown in C:\xampp\htdocs\test\system\core.php on line 14

我读错误消息后,是不是找不到类核心?但是这个类写在同一个文件中???

1 个答案:

答案 0 :(得分:4)

您必须设置完全限定名称。因为您的类位于system\core命名空间:

spl_autoload_register(array('system\core\core', 'autoload'));