spl_autoload()函数的作用以及其和spl_autoload_register()的关系?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了spl_autoload()函数的作用以及其和spl_autoload_register()的关系?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3076字,纯文字阅读大概需要5分钟。
内容图文
![spl_autoload()函数的作用以及其和spl_autoload_register()的关系?](/upload/InfoBanner/zyjiaocheng/241/b611c1f1e39c45eabc2c5e0f500f7af0.jpg)
__autoload()
函数的默认实现
该函数的例子中看到该函数的作用是类似于include(),只不过是可以传入第二个参数来设置后缀名。而且spl_autoload()无法指定path(当然可在调用该函数之前调用set_include_path()来指定)
另外看到有些博客说到:
怎样让spl_autoload自动起作用呢,也就是将autoload_func指向spl_autoload?答案是使用spl_autoload_register函数。在PHP脚本中第一次调用spl_autoload_register()时不使用任何参数,就可以将autoload_func指向spl_autoload。
但在我的自己的测试中,发现只调用spl_autoload(),传入想要载入的类名,就可以直接载入了,不需要在之前调用spl_autoload_register()。
我的问题是:
PHP手册中的解释:__autoload()函数的默认实现 该如何理解?
spl_autoload()和spl_autoload_register()的关系?
spl_autoload()函数存在的意义是?
谢谢!
回复内容:
在学习php的autoload的机制的时候,发现目前都使用了spl_autoload_register()函数来实现自动加载类,但在查阅资料的过程中,发现了spl_autload()这个函数,在php官方手册中,对该函数的解释是:
__autoload()
函数的默认实现
该函数的例子中看到该函数的作用是类似于include(),只不过是可以传入第二个参数来设置后缀名。而且spl_autoload()无法指定path(当然可在调用该函数之前调用set_include_path()来指定)
另外看到有些博客说到:
怎样让spl_autoload自动起作用呢,也就是将autoload_func指向spl_autoload?答案是使用spl_autoload_register函数。在PHP脚本中第一次调用spl_autoload_register()时不使用任何参数,就可以将autoload_func指向spl_autoload。
但在我的自己的测试中,发现只调用spl_autoload(),传入想要载入的类名,就可以直接载入了,不需要在之前调用spl_autoload_register()。
我的问题是:
PHP手册中的解释:__autoload()函数的默认实现 该如何理解?
spl_autoload()和spl_autoload_register()的关系?
spl_autoload()函数存在的意义是?
谢谢!
__autoload 函数是用来处理自动加载的函数,在 PHP 找不到指定类时就会去调用自动加载类,加载所需要的类。
__autoload 只是一个抽象定义,实现(实现就是定义如何加载,加载的规则是什么,加载的文件是什么等等)是交给用户的,而 spl_autoload 则是 SPL 所定义的 __autoload 一种实现。spl_autoload 函数所实现的加载规则就是去 include paths 中查找对于的类。spl_autoload 遵循是是 psr-0 的载入规则,而 include paths 就是载入时被查询的路径。
其他自己实现的 __autoload 类都可以通过 spl_autoload_register 进行注册,注册之后就可以在需要类时自动调用被注册的方法进行加载了。 spl_autoload 也是 __autoload 的一种实现,按理也是需要注册的,只不过因为是内部的默认实现,所有已经自动注册在 PHP 里了。
spl_autoload 如今来看并没有太多用处,应该是因为历史问题残留在 PHP 中的,目前绝大多数程序都没有使用 spl_autoload 去做自动加载,因为它的规则已经定死,并不适合衍生一些功能。
插一句,因为 PHP 只有一个自动加载方法,所以 SPL 的 spl_autoload 和 spl_autoload_register 要争抢这个方法,所以在 SPL 的 C 实现中,用了好多折衷的办法。在没有使用 spl_autoload_register 注册任何自定的自动加载函数时, PHP 的自动加载方法是挂在 spl_autoload 下的,而 spl_autoload_register 注册了自动加载函数后,PHP 的自动加载方法是挂在 spl_autoload_call 这个方法下的,而 spl_autoload 也会成为一个备选项进入 spl_autoload_register 的自动加载队列。
内容总结
以上是互联网集市为您收集整理的spl_autoload()函数的作用以及其和spl_autoload_register()的关系?全部内容,希望文章能够帮你解决spl_autoload()函数的作用以及其和spl_autoload_register()的关系?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。