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”