5
hier zu fragen ist ein Fehler für meine Autoloader-Klasse/-Funktion mit spl_autoload_register?LogicException Fehler: Passed Array gibt keine vorhandene statische Methode
zu schätzen, um zu helfen.
hier ist mein Code
<?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 {}
und ich habe diesen Fehler
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
, nachdem ich den Fehler msg lesen, bedeutet es die Klasse Kern nicht gefunden? aber die Klasse ist in der gleichen Datei geschrieben ???
Danke, es hat funktioniert, vergessen i Namespace bin verwenden, legen Sie es als Antwort nach 2 Minuten – geass
ich das gleiche Problem habe. In meinem Fall befindet sich die Klasse, die die Autoload-Funktion enthält, in einer anderen Datei vom Aufruf 'spl_autoload_register'. Es funktioniert, wenn ich die Klasse in dieselbe Datei wie den 'spl_autoload_register'-Aufruf kopiere. –