资讯专栏INFORMATION COLUMN

带小白理解php的自动加载

DevYK / 3044人阅读

摘要:之后,实现了自动加载,可以通过方法进行文件的的自动引入。第二个参数为时,当类的自动加载函数无法成功注册时会抛出异常。也就是说,只要你的代码符合规范,不需要就可以自动加载相应的类。

什么是自动加载

自动加载是指在你想使用某个类,但你没有require 对应的.php文件的时候,程序帮你自动加载了php文件。(require是件很痛苦的事情OvO)
在没有自动加载之前,你的代码可能是如下这样的:


引入了好多的require,随着项目的不断迭代,会很乱。这样的设计并不好。
php5.3之后,实现了自动加载,可以通过spl_autoload_register()方法进行php文件的的自动引入。spl_autoload_register()有三个参数。

spl_autoload_register("autoload1",true,true);
第一个参数是当需要创建的类不存在时,调用autoload1()这个方法。
第二个参数为true时,当类的自动加载函数无法成功注册时会抛出异常。
第三个参数为true时,spl_autoload_register()方法会添加类的自动加载函数到队列之首,而不是队列尾部。

因此,我们最后的代码会是这样:

define("BASEDIR", __DIR__);
public static function autoload($class)
    {
        require BASEDIR . "/" . str_replace("", "/", $class) . ".php";
    }
spl_autoload_register("autoload");
$operation = new IMoocOperation(10);
执行过程


首先定义了一个常量为BASEDIR为当前的目录(根目录),(1)当程序执行到$operation = new IMoocOperation(10);时,php引擎就会搜索作用域下是否有IMoocOperation这个类,如果有,则正常引入,如果没有则(2)调用spl_autoload_register()方法,然后再执行(3)autoload方法,autoload的参数$class为文件路径,根据psr-4规范,文件名要与类名相互对应,(也就是说,User.php文件只能有一个class,而且class名字必须是User),所以你在引入了php文件后,相当于引入了这个类,就可以调用相应的方法了。
antuoload()在这个例子中被解析为

public static function autoload($class)
    {
        require ‘imooc/IMooc/Operation.php’;
    }

引入了这个类,自然就可以使用new Operation()对象。
也就是说,只要你的代码符合psr-4规范,不需要require就可以自动加载相应的类。想象一下,你并不需要引入对应的类就可以直接使用,这很棒。
如果本文对你有帮助,不妨点一个赞!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29897.html

相关文章

  • 最适合入门 Laravel 初级教程 (一)

    摘要:最适合入门的初级教程一为什么选择曾经要跟白头到老没想到它升了个级就抛了锚把我等抛弃了痛定思痛重新审视了一遍框架是世界上最好的语言这个没有疑问吧如果有那绝对是个异教徒这是要被拖出去烧死的信仰的问题神圣不可侵犯那最好的语言中最流行的框架是哪个呢 最适合入门的 Laravel 初级教程 (一) 为什么选择 laravel 曾经要跟 thinkphp 白头到老;没想到它升了个级就抛了锚;把我等...

    klivitamJ 评论0 收藏0
  • Laravel 5.4 入门系列 13. 终篇: 小白也能看懂 Laravel 核心概念讲解

    摘要:但是服务通常由服务提供者来管理的。小结通过上述的例子,基本上可以理解服务容器和服务提供者的使用。懂得了服务容器和服务提供者,理解门面也就不难了。 自动依赖注入 什么是依赖注入,用大白话将通过类型提示的方式向函数传递参数。 实例 1 首先,定义一个类: /routes/web.php class Bar {} 假如我们在其他地方要使用到 Bar 提供的功能(服务),怎么办,直接传入参数即...

    BenCHou 评论0 收藏0
  • 小白进击前端攻城狮经历

    摘要:来吧,先做个简单的不算自我介绍的介绍吧。我本一名普通的打工仔,自高中毕业后就出来打工。从服务员到工厂打工,已经年了。于是在年月份,我开始了根据我的兴趣进行学习知识。 来吧,先做个简单的不算自我介绍的介绍吧。我本一名普通的打工仔,自高中毕业后就出来打工。从服务员到工厂打工,已经4年了。在这四年里,我渐渐发觉为什么领导就得让我仰视,我在他们这些老板当中我变得那么渺小。 于是在2016年...

    alogy 评论0 收藏0
  • 小白看过来 让Python爬虫成为你好帮手

    摘要:小白看过来让爬虫成为你的好帮手随着信息化社会的到来,人们对网络爬虫这个词已经不再陌生。互动活动关于华为云微认证的任何问题,均可在下方评论区留言。华为云微认证每期将送出个免费机会,奖项公布时间月日。 小白看过来 让Python爬虫成为你的好帮手 随着信息化社会的到来,人们对网络爬虫这个词已经不再陌生。但什么是爬虫,如何利用爬虫为自己服务,这听起来有些高大上。下面一文带你走近爬虫世界,让即...

    darcrand 评论0 收藏0
  • 郑方方打怪升级日记 — 初识HTML5与CSS3

    摘要:任务名称响应式砸蛋页面任务背景前辈方方啊最近项目也没什么事情你看这个砸蛋页面不是很好看要不你做一个响应式砸蛋页面吧系统郑方方接下前辈的任务郑方方自动解析任务步骤任务响应式砸蛋页面与入门阅读秘籍响应式布局制作层搭配搭配控制器完成任务人物背 任务名称:响应式砸蛋页面 任务背景 前辈:方方啊,最近项目也没什么事情,你看这个砸蛋页面不是很好看,要不你做一个响应式砸蛋页面吧? 系统:郑方方接下前...

    spademan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<