为了账号安全,请及时绑定邮箱和手机立即绑定

use和__autoload以及spl_autoload_register的作用?

use和__autoload以及spl_autoload_register的作用?

PHP
largeQ 2019-03-13 04:37:11
初学php有一些概念不是很明白,下面是一些我的理解:1 . __autoload魔术方法在实例化未导入的类时被调用(就是一个回调函数),在这个函数中可以实现对类文件的包含(require);2 . __autoload起的作用和require以及include是相似的,只是实现形式不同;3 . spl_autoload_register 注册给定的函数作为 __autoload 的实现; 这些理解有问题么? 我在写php代码的时候一般使用use关键字导入要使用的类(和java、c#类似)既然可以使用use这种简单的方式实现类的导入,为啥还要有上面这么多不同的方式来实现呢?而且明显use用起来更加简单、方便。是为了反射场景么?
查看完整描述

5 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

use是引入要使用的命名空间,方便实现同项目同类名的区分。真正能使用类本身的需要require/include类所在的文件,而__autoloadspl_autoload_register所做的事情是能够实现自动化引入文件等等。

查看完整回答
反对 回复 2019-03-18
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

use 是引入命名空间 ,使用前 得把需要的类文件引入。

__autoload 函数可以自动引入你要使用的类文件
简单的例子像这样

function __autoload( $classname ) {
    include_once( "$classname.php" );
}
$product = new ShopProduct();

可以引用类。__autoload 只可以定义一次,如果需要多条 autoload 就可以使用spl_autoload_register

查看完整回答
反对 回复 2019-03-18
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

use是引入命名空间,自动加载是按需加载,php是解释型语言,每次请求进来都需要重新加载文件,这是主要因素。

查看完整回答
反对 回复 2019-03-18
?
BIG阳

TA贡献1859条经验 获得超6个赞

其实还有一点问题,要仔细去看一下文档说明.以上都是对的.我这里只说上面没有说到的.
注册__autoload函数,只是注册一个加载函数.这个修改了php底层的加载模式.为了不修改底层的加载模式,php提出一种新的加载方式,spl_autoload_register.这个是一个函数队列,如果理解队列呢.就是从上往下找,直到找到为止.具体的来说,就是

* __autoload会改变底层的加载模式,而spl_autoload_register不会.
* spl_autoload_register是一个加载队列,如果需要多条 autoload 函数,spl_autoload_register满足了此类需求

详细的请查看一下官方文档.

查看完整回答
反对 回复 2019-03-18
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 723 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信