说起php里面autoload自动加载功能,是非常的实用。如果你不懂的自动加载是什么意思,那么你一定知道php里面无处不在的require_once或者include_once。对,autoload其实说白了,其实就是可以自动执行require系列函数。

在php7.2全面到来的今天,这个功能就体现为函数:spl_autoload_register(),本函数最开始出现于php5.1

spl_autoload_register() vs __autoload()

苏南大叔:php如何通过spl_autoload_register自动加载类定义 - php-ice
php如何通过spl_autoload_register自动加载类定义(图5-1)

一直以来,自动加载功能都是通过在文件中定义函数__autoload()来实现的。不过,从php5系列开始,出现了一个新的函数,spl_autoload_register(),慢慢取代__autoload()函数的统治格局。

  • spl_autoload_register()可以执行多次,也就是说可以定义很多个autoload规则。
  • __autoload()函数,只能定义一次,第二次定义就会报错了。

而在最新的php72中,spl_autoload_register()已经完全占据了市场份额。当然,并不是说,不可以定义__autoload()函数,只是在最新的php72中,它已经失去了其专属功能设定,必须依靠spl_autoload_register()才能继续完成其历史使命。

既然,主流的php都已经支持spl_autoload_register(),而且最新的php72已经废弃__autoload()。那么,我们的选择,就并不需要纠结了,对吧?

匿名函数加载的方案

spl_autoload_register(function ($class) {
    echo("匿名函数的模式加载:".$class."<br/>");
    // todo ..
  }
);

苏南大叔:php如何通过spl_autoload_register自动加载类定义 - load3
php如何通过spl_autoload_register自动加载类定义(图5-5)

总结

由于篇幅限制,苏南大叔在这里就说一下第一个参数autoload_function,其他的不常用参数将在spl_autoload_register()的进阶版本中进行阐述。

更多相关spl_autoload_register相关文章,请点击下面这个链接查看:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   php    autoload

本站的忠实读者小伙伴,正在阅读下面这些文章: