·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> php的spl_autoload标准库方法

php的spl_autoload标准库方法

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
php的spl_autoload标准库方法

在php5中的标准库方法spl_autoload相当于实现自己的__autoload

<?php    function __autoload($classname){        if(is_file($classname.'.php'){            include $classname.'.php';        } elseif(is_file($classname.'.inc'){            include $classname.'.inc';        }    }

它会在注册目录下自动寻找与$classname同名的.php/.inc文件。当然,你也可以指定特定类型的文件,方法是注册扩展名

<?php    spl_autoload_extensions('.php,.inc,.some');

这样,它也会搜索.some文件。默认,php是不会启动spl_autoload的,那么怎样才能自动让spl_autoload生效呢呢?方法是

<?php    spl_autoload_register();

spl_autoload_register有一个$callback参数,如果不指定,它就会自动注册spl_autoload,为了能搜寻更多的自动加载目录,可以在这些代码前面设置自动加载目录

<?php    set_include_path(get_include_path() . PATH_SEPARATOR . 'some/path' . DIRECTORY_SEPARATOR);

这样,当php找不到指定的类时,就会在set_include_path指定的目录下寻找。

这些方法常用在php框架中。比如把上面的介绍串连起来:

<?php
set_include_path(get_include_path() . PATH_SEPARATOR . 'some/path' . DIRECTORY_SEPARATOR);spl_autoload_extensions('.php,.inc,.some');spl_autoload_register();

当你要加载some/path下面的classA类时,它会在目录下寻找classa.php或classa.inc或classa.some,这样你就可以放心地运用new classA或extends classA

<?php    ClassB extends ClassA {        // code..    }    $a = new ClassA;    $b = new ClassB;