我一直在阅读spl_autoload_register
函数,以替换require
,require_once
,include
和& include_once
。虽然有很多关于如何实现这一点的讨论,但文档并不是太详细,也没有解释它如何对原始方式有益。
参考:http://php.net/manual/en/function.spl-autoload-register.php
我想知道spl_autoload_register
是如何运作的?
使用spl_autoload_register
时是否存在性能差异?
它如何处理交叉链接类中的许多require语句(超过20个)? (这不会导致重复需要吗?)
答案 0 :(得分:8)
我从未测试过(或担心过)性能,但我始终使用自动加载器,因为它让您的生活变得更轻松。
有关实施,请参阅:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
当您尝试访问某个类时会发生什么? Foo
尚未加载文件。自动加载器将启动并尝试加载属于该类的文件。
这可以通过“正确”组织项目中的文件来轻松完成。假设您有一个类\Project\Http\Client
(或“旧样式”非命名空间Project_Http_Client
),它会尝试加载文件:Project/Http/Client.php
。