gpt4 book ai didi

php - SPL 自动加载和命名空间

转载 作者:搜寻专家 更新时间:2023-10-31 20:43:10 27 4
gpt4 key购买 nike

通过网络浏览后,我设法构建了一个有效的 SPL_Autoload 并在其中使用了命名空间。它确实有效,但与我正在查看的所有示例和文档相比,它对我来说也有点奇怪。我是否使用了所有内容并正确理解了它?

$class 查找名为 subdir\timer 的类,由于找不到,因此转到 SPL_autoload

$class = new subdir\timer;

SPL_autoload 假设在文件夹“subdir”中查找文件“timer”以 .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");
});

您认为有什么地方可以改进或者我做错了什么?

最佳答案

我已经测试过了,它对我有用:

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-1PSR-2哪些值得知道..

关于php - SPL 自动加载和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17767034/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com