「php化整为零系列」一、autoload

「php化整为零系列」一、autoload_第1张图片

源码地址: https://github.com/wilfordw/phpTutorial

该系列我只写我的理解,非官方解释,如不够专业请见谅

_autoload

作为一个面向对象语言,经常需要用new实例化类对象,但如果new另一个文件中的类对象,那首先要把文件加载进来(require_once)。如果每次new都要这样一个过程话,会非常繁琐,于是我们可以用php的自动加载功能定制特定加载规则。

ClassA.php

ClassB.php

_autoload.php

如上 只要在同一目录下就可以直接加载该目录已有的类。不过根据当前规则,类名必须要和文件名一致,加载目录下没有的类会报错。同时整个php生命周期内只能有一个__autoload函数,所以使用很有局限性,很难把控,目前已经基本弃用,被spl_autoload所代替

spl_autoload

spl_autoload引入自定义注册机制,这样就避免了__autoload 全局唯一引发冲突的尴尬,需要的使用调用bool spl_autoload_register ( [callback $autoload_function] ) 注册 ,不用了调用bool spl_autoload_unregister ( mixed $autoload_function )注销

以上就用了spl_autoload 注册自动加载,实现加载ClassA,然后注销自动加载

该例子中由于是注册LOAD类中的loadClass,用了array('LOAD', 'loadClass'),如果只是调用脚本中的函数就直接可用函数名spl_autoload_register( 'loadClass')

你可能感兴趣的:(「php化整为零系列」一、autoload)