PHP

来源:互联网 发布:斯皮尔伯格知乎 编辑:程序博客网 时间:2024/06/13 08:32

功能说明

将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。

注:SPL是Standard PHP Library(标准PHP库)的缩写。它是PHP5引入的一个扩展库,其主要功能包括autoload机制的实现及包括各种Iterator接口或类。 SPL autoload机制的实现是通过将函数指针autoload_func指向自己实现的具有自动装载功能的函数来实现的。SPL有两个不同的函数 spl_autoload, spl_autoload_call,通过将autoload_func指向这两个不同的函数地址来实现不同的自动加载机制。

实战练习

创建一个类文件A.php,定义一个名字为A的类

<?php   class A {    public function __construct() {           echo 'Got it.';    }}

创建index.php,要想在index.php中使用类A,常规写法为

<?php   require('A.php');   $a = new A();

但是,本人不想每次使用类A都要写一段require语句,而是希望使用类A时,系统可以自动加载A.php文件,在php5及之后版本中就可以使用__autoload函数来进行自动类加载

<?php   function __autoload($class) {    $file = $class.'.php';    if (is_file($file)) {        require_once($file);    }}$a = new A();

如果不想使用默认的__autoload函数,而是使用自定义函数,则需要使用spl_autoload_register()来进行注册

function autoload($class) {    $file = $class.'.php';    if (is_file($file)) {        require_once($file);    }}spl_autoload_register('autoload');$a = new A();

下面这种写法也是同样的效果

<?php   class Loader {    function autoload($class) {        $file = $class.'.php';        if (is_file($file)) {            require_once($file);        }    }}spl_autoload_register(array('Loader', 'loadClass'));   $a = new A();
0 0
原创粉丝点击