在浏览web之后,我已经成功地构建了一个工作的SPL_Autoload,并在其中使用了名称空间。它确实可以工作,但与我查看的所有示例和文档相比,它对我来说也有点奇怪。我是否正确地使用和理解了所有的东西?
$class查找一个名为subdir\timer的类,由于它找不到它,因此转到SPL_autoload
$class = new subdir\timer;SPL_autoload应该在文件夹'subdir‘中查找文件’.php‘或’.class.php‘结尾的文件(感谢SPL_extensions)
现在我不太确定register和SPL_autoload中发生了什么。当我尝试自己注册时,它没有使用_extensions,但当我添加spl_autoload时,它工作得很好。唯一的问题是我从来没有在任何例子中看到过这样的设置,所以我真的对这一部分提出了质疑
spl_autoload_extensions(".php,.class.php");
spl_autoload_register(function($class){
spl_autoload("$class");
});你觉得有什么地方可以改进,或者我做错了什么?
发布于 2013-07-21 06:45:16
我已经测试过了,它对我来说很有效:
set_include_path(__DIR__.'PATH_TO_LIB');
spl_autoload_extensions('.php,.class.php');
spl_autoload_register();所以你已经设置了正确的include_path?
此外,对于名称空间和类名,还有一个称为PSR-0的标准。
https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
他们也有一个更大但也更灵活的SplClassLoader,尽管我想知道你只能设置一个文件扩展名。但是搜索PSR-0 autoloader,你会找到更多的实现。顺便说一下,还有一些值得了解的标准PSR-1和PSR-2。
https://stackoverflow.com/questions/17767034
复制相似问题