来聊聊,spl_autoload_register的前世今生

举报
原来是咔咔 发表于 2022/03/26 23:58:39 2022/03/26
【摘要】 本文将会带你了解属于spl_autoload_register的故事。 前言 咔咔整理了一个路线图,着手打造一份面试宝典,准备按照这样的路线图进行编写文章,后期发现没有补充到的知识点在...

本文将会带你了解属于spl_autoload_register的故事。

前言

咔咔整理了一个路线图,着手打造一份面试宝典,准备按照这样的路线图进行编写文章,后期发现没有补充到的知识点在进行添加。也期待各位伙伴一起来帮助补充一下。评论区见哦!

在这里插入图片描述

一、spl_autoload_register前世今生

在刚刚接触PHP没有使用框架之前相信大多数伙伴都用过include和require,当然还有include_once和require_once。

这俩个区别还记得吗?

include引入报错时只会有警告,而require则会直接让脚本停止。

在PHP5.3引入了命名空间的概念,为此在PHP文档中记载着11年前一位贡献者是这样说的,I made this benchmark to ensure that I don't recommend something that could be called "nice, but slow" later

翻译过来是“我做的这个测试,是为了确保我以后不推荐可以称之为不错,但是很慢的东西”。

做的这个测试就是定义了10个文件夹,每个文件夹有10个子文件夹并且每个子文件夹里都有10个类,然后使用了autoload和spl_autoload对比之后,平均执行时间多50ms。

那么这个东西指的就是_autoload(),终将这个方法在PHP7.2被废弃。

那么除了效率问题之外还有一个原因最终废弃了_autoload这个方法。

spl_autoload_register可以根据自己需求写多个,加载顺序是按照队列方式,先进先出。

autoload是全局函数,所以只能定义一次,多次定义会报错。如果一个项目使用多个框架实现,就会引发这样的问题。

二、spl_autoload_register简单使用

这个函数只有三个参数,第一个参数为自动加载的函数,第二参数为自动注册的函数失败时是否抛出异常,第三个参数为添加函数到队列之首,而不是队列尾部。

以上都是根据true定义的。

定义俩个文件say和user

say文件声明一个类Say并且设置一个方法hello

在这里插入图片描述

这时来到user文件,我们需要先定义一个autoload方法,然后使用spl_autoload_register进行注册

在这里插入图片描述
打印出来的数据结果
在这里插入图片描述

坚持学习、坚持写博、坚持分享是咔咔从业以来一直所秉持的信念。希望在偌大互联网中咔咔的文章能带给你一丝丝帮助。

文章来源: blog.csdn.net,作者:咔咔-,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/fangkang7/article/details/108287982

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。