第八节:php自动加载机制

PHP面向对象编程基础

php自动加载机制,多亏PHP5之后,我们幸运地拥有spl_autoload_register() 函数自动加载,这确实使使用类变得更容易,为我们解决每个脚本的开头,都需要包含(include)一个长长的列表(每个类都有个文件)。对于小项目来说,手动管理文件和类是没有问题的,但一开始做更大的项目,手动管理管理文件的事情就会变得非常繁琐复杂混乱,手动管理整个代码库,基本上是难以管理的。通过注册自动加载器,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类,如果代码包含尚未声明的类引用,则会自动调用自动加载器。现在自动加载程序会自动搜索并加载相应的文件。

php自动加载机制-实例演示

php自动加载机制-实例演示

php自动加载机制-实例演示

让我们回到index.php删除require声明除了Helper.php,因为我们将自动加载函数放在Helper.php文件里面,让我们回到浏览器,代码报错:

我们现在开始在Helper.php编写自动加载程序,一个自动加载器基本上是一个包含一组规则和过滤器的函数,所以我们现在创建一个。我们将其称为自动加载,这需要是一个函数,它会接收一个参数:

让我们调用这个className函数,无论我想要什么,但自动加载似乎是正确的?首先,我们需要构建一个文件名来搜索,现在我已经方便地在文件包含的类之后命名文件,所以我们只需要添加一个文件扩展名即可,让我们来创建一个文件变量:

现在,当我们实例化一个不存在的对象时,我们如何才能确保这个函数实际运行呢?那么在这个地方就要用到魔术方法了,只要像这样注册我们的功能spl_autoload_register,我们所需要做的就是传递函数名称:

让我们回顾上面的代码,我们创建一个文件名称,目录名称,后跟一个斜线,后跟classname,结尾.php,所以如果我们调用一个用户类,文件将是文件的路径,然后是User.php,那么我们检查一下这个文件是否存在,如果存在,我们需要用它:

刷新index.php测试是否正常工作,这一切似乎工作得很好,尽管我们现在不再需要index.php顶部的Validator和User类。autoload可以让你的程序读取文件变得更容易,想想看,还有比这更有效的使用名称空间自动加载的方法吗?

下载本节课完整源码

接近10年的互联网从业经验,精通Scrum敏捷软件开发的方法,从事互联网产品设计,开发,测试,运营,案例不少于20个,发现自己最喜欢的工作是做外贸营销,外贸SEO,特别喜欢谷歌优化。从2017年3月开始坚持在群161510483直播谷歌SEO和WEB前端开发技术,只要加进来坚持学习零基础也能够学会。

Last modified: 2019年1月21日

Previous Story

PHP面向对象编程基础

第七节:PHP魔术方法

PHP魔术方法:每个类都充满了“魔法”等待着他们释放魔法的力量,首先让我们看user类,现在魔术方法被无形地调用,导致我们经常忘记它们存在,但他们确实存在于那里.

...

Next Story

PHP面向对象编程基础

第九节:使用PHP命名空间

php命名空间:是一种封装事物的方法都可以见到这种抽象概念,在PHP中,类class和函数function必须有唯一的名字才能正常运行.

...