5

在这里问我的自动加载器类/函数与 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

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

4

1 回答 1

4

您必须设置一个完全限定的名称。因为您的类在system\core命名空间中:

spl_autoload_register(array('system\core\core', 'autoload'));
于 2013-10-31T08:58:50.957 回答