最新消息:周一至周五21:30分QQ群(161510483)直播,零基础免费学谷歌SEO,WEB前端,PHP入门教程

第八节:php自动加载机制

PHP面向对象编程基础 林雍岷 116浏览

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可以让你的程序读取文件变得更容易,想想看,还有比这更有效的使用名称空间自动加载的方法吗?

下载本节课完整源码

转载请注明:林雍岷 » 第八节:php自动加载机制