【小白笔记】PHP学习之路 (22) --对象 __autoload spl_autoload_register 自动载入
来源:互联网 发布:滁州淘宝服饰 编辑:程序博客网 时间:2024/06/08 18:47
__autoload() 当调用了某个函数或实例化类,而在本文件中找不到时执行。
通过有规律的名字可以使用__autoload()函数自动载入需要的文件。
例如在action文件夹下有三个文件:
arcAction.php channelAction.php modelAction.php
这三个文件中包含了一个各自对应的类,类名与文件名相同。(只要有一定规律,可以通过字符串拼接得到即可)
在与action文件夹同级的目录common文件夹下有一个Action.php文件,
现在想在Action.php文件中访问action下三个文件中的类,直接的做法是将三个文件都
include一次。但是如果这三个文件之间也要进行类的访问的话,又得彼此include,
一旦目录名更改,修改起来非常麻烦。此时如果使用__autoload()函数就十分方便:
在action所在的文件夹下新建一个index.php文件,用于目录管理:
index.php
<?phpfunction __autoload($classname){include './action/'.$classname.'.php';}$a = isset($_GET['a'])?$_GET['a'].'Action':'index';$action = new $a();?>
这样,如果通过GET方法获得字符串arc,那么$a的值就是arcAction,
而在index.php中找不到arcAction这个类,这时就会自动执行__autoload()函数,
$a作为参数$classname被传递到__autoload函数内,拼接后的字符串是这样:
'./action/arcAction.php'
这时使用include函数,就会在action文件夹下找到arcAction.php文件,引入。
而arcAction.php中存在名为arcAction的类,引入后在index.php中自然就可以访问
arcAction.php中的类了。这时的index.php就起着类似目录管理的作用。
只要是通过index.php文件访问action目录下的文件,index.php都会将其自动载入。
当其他文件想要访问action目录中的文件时,只要把index.php引入即可。
spl_autoload_register() 功能与__autoload一样,只不过可以自定义函数名称。
当使用spl_autoload_register定义了执行函数之后,当找不到某个函数或类的时候,
将会执行自定义函数,而不是__autoload()。
例如:
spl_autoload_register('load_auto');spl_autoload_register(array('load','loadauto'));
上面一行指定以自定义的load_auto函数代替__autoload函数,下面一行则是指定类load的方法loadauto
来执行。注意此时类的方法loadauto要定义成静态的(public static)。
可以在类中定义自动载入函数:
class x{function __construct(){$this->config();}public static function load($filepath){include "{filepath}";}public function config(){spl_autoload_register(array(__CLASS__,'load'));}}
- 【小白笔记】PHP学习之路 (22) --对象 __autoload spl_autoload_register 自动载入
- PHP进阶学习之spl_autoload_register与__autoload方法使用
- PHP类的自动加载__autoload && spl_autoload_register
- PHP中的__autoload()和spl_autoload_register()笔记
- PHP自动加载类—__autoload()和spl_autoload_register()
- PHP自动加载类—__autoload()和spl_autoload_register() (补充)
- PHP自动加载类—__autoload()和spl_autoload_register() (补充)
- PHP 自动载入,实例化对象时自动include类文件(spl_autoload_register)
- __autoload,spl_autoload_register与自动加载
- PHP函数__autoload()和spl_autoload_register()
- 117 php __autoload 和 spl_autoload_register
- PHP自动加载之spl_autoload_register()
- PHP __autoload函数(自动载入类文件)的使用方法
- PHP __autoload函数(自动载入类文件)的使用方法
- PHP函数spl_autoload_register()用法和__autoload()介绍
- PHP函数spl_autoload_register()用法和__autoload()介绍
- PHP中spl_autoload_register()和__autoload()区别分析
- php中__autoload和spl_autoload_register的用法
- 排序算法(3):冒泡排序与快速排序
- Android apk反编译 重打包 重签名 对齐
- NGUI、tk2d鼠标事件屏蔽
- php中常用的字符串格式化函数
- Android 使用HttpURLConnection实现多线程下载 笔记
- 【小白笔记】PHP学习之路 (22) --对象 __autoload spl_autoload_register 自动载入
- JDK中rt.jar、tools.jar和dt.jar作用
- 坐标类型的类
- 使用npm安装一些包失败了的看过来(npm国内镜像介绍)
- 十。内核时间问题
- NSNotification 通知传值
- Linux工具: shutter, chrome, google pinyin, java
- 【图的存储结构】
- One-day-one-program(5)之冒泡排序