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

Posted

技术标签:

【中文标题】LogicException 错误:传递的数组未指定现有的静态方法【英文标题】:LogicException error: Passed array does not specify an existing static method 【发布时间】:2013-11-11 04:33:49 【问题描述】:

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

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

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

【讨论】:

谢谢,它成功了,忘记我正在使用命名空间,将在 2 分钟后将其设置为答案 我也遇到了同样的问题。在我的例子中,包含自动加载函数的类位于来自spl_autoload_register 调用的另一个文件中。当我将类复制到与spl_autoload_register 调用相同的文件中时,它可以工作。

以上是关于LogicException 错误:传递的数组未指定现有的静态方法的主要内容,如果未能解决你的问题,请参考以下文章

Laravel手记:执行route:cache时报LogicException

LogicException:请确保已安装并启用 PHP Redis 扩展

Laravel 5 - 带有消息“无法准备路由”的异常“LogicException”

com_ajax - LogicException:模块未发布,您无权访问它

C在函数中传递二维数组会给我分段错误

将指向数组的指针传递给函数时出现分段错误(C++)