【发布时间】:2018-04-28 12:13:16
【问题描述】:
我对 php 自动加载的一件事感到困惑:spl_autoload() 函数。在每个答案中,我发现这个函数是__autoload 的默认实现。 PHP不应该自己定义__autoload()的默认实现,然后如果我明确创建__autoload(),它会覆盖它吗?
如果我没有在我的 php 文件中明确定义 __autoload() 函数,会有默认实现吗? spl_autoload()是某种内部函数吗,如果是,那为什么在php doc里面呢?
(如果它不是内部函数)在每个 spl_autoload() 示例中都没有对该函数的任何调用,只有 spl_autoload_register 没有参数,spl_autoload_extensions 等等。为什么这样?我错过了什么?
引用自:What is Autoloading; How do you use spl_autoload, __autoload and spl_autoload_register?
set_include_path(get_include_path().PATH_SEPARATOR.'path/to/my/directory/'); spl_autoload_extensions('.php, .inc'); spl_autoload_register();因为 spl_autoload 是 __autoload() 的默认实现 魔术方法,当您尝试实例化时,PHP 将调用 spl_autoload 一个新的类。
所以如果我不调用spl_autoload_register(),它就不会注册默认实现? spl_autoload 是否查看 spl_autoload_extensions(); 设置的扩展名,然后从包含路径导入所有具有这些扩展名的文件?重复前面提到的问题:spl_autoload()是内部函数吗?
我知道__autoload() 已被弃用,我应该使用spl_autoload_register()。我只是想确保我知道这一切是如何运作的。
谢谢。
【问题讨论】:
-
@Dipakchavda 我看过那个帖子
-
不要关心
__autoload- 该功能已被弃用。使用spl_autoload_register并使用您自己的自动加载功能 -
@Philipp 这就是我不想要的答案。我知道它已被弃用,我只想知道它是如何工作的。
标签: php autoloader spl spl-autoloader