0
오토로더 클래스를 구현 중이며 작동하지 않습니다.PHP 오토로더 클래스
class System
{
public static $loader;
public static function init()
{
if (self::$loader == NULL)
{
self::$loader = new self();
}
return self::$loader;
}
public function __construct()
{
spl_autoload_register(array($this, "autoload"));
}
public function autoload($_class)
{
set_include_path(__DIR__ . "/");
spl_autoload_extensions(".class.php");
spl_autoload($_class);
print get_include_path() . "<br>\n";
print spl_autoload_extensions() . "<br>\n";
print $_class . "<br>\n";
}
}
자동 로더를 호출하는 코드는 여기에 있습니다 : :
<?php
error_reporting(-1);
ini_set('display_errors', 'On');
require_once __DIR__ . "/system/System.class.php";
System::init();
$var = new MyClass(); // line 9
print_r($var);
?>
그리고 오류 메시지 :
이/home/scott/www/system/
.class.php
MyClass
Fatal error: Class 'MyClass' not found in /home/scott/www/index.php on line 9
자동로드 기능은 아래 (this page on php.net에서 영감) 오토로더 클래스입니다 히트를 치면 MyClass.class.php 파일이 포함 된 경로에 존재하는데 코드를이 코드로 변경하면 확인할 수 있습니다 :
<?php
error_reporting(-1);
ini_set('display_errors', 'On');
require_once __DIR__ . "/system/System.class.php";
require_once __DIR__ . "/system/MyClass.class.php";
System::init();
$var = new MyClass();
print_r($var);
?>
print_r($var);
은 오류없이 개체를 반환합니다.
조언이나 조언이 필요하십니까?
내가 작곡가의 오토로더를 사용하도록 제안하고 당신에게 옵션을 spl_autoload에 대한 문서 (에 따르면 –
을 다른 패키지를 쉽게 사용하는 것)에 함수는 클래스를 소문자로 처리하므로 MyClass.class.php보다는 myclass.class.php를 찾고 있습니다. 내 파일 이름을 낮은 사례 버전으로 변경하면 정상적으로 작동합니다. 바보. –