PHP函数spl_autoload_register()用法和__autoload()介绍

前端之家收集整理的这篇文章主要介绍了PHP函数spl_autoload_register()用法和__autoload()介绍前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

__autoload()的用法就不再说了,以前已经在我的WEB开发笔记中说过。PHP __autoload函数自动载入类文件)的使用方法, 原文地址:

说一说,spl_autoload_register()的用法吧,很简单,可以这样理解,就是声明一个自定义__autoload(),你可以是A函数,也可以是B函数,想怎么样就怎么样,函数体的写法,当然要和__autoload()一样就OK 了。

PHP找不到类文件调用这个方法,当注册了自己的函数方法时,PHP不会调用__autoload()函数,而会调用自定义函数

spl_autoload_register(‘func_name');
spl_autoload_register(array(‘class_name','method_name'));

详细说明如下:

spl_autoload_register (PHP 5>= 5.1.2) spl_autoload_register — 注册__autoload()函数 说明 bool spl_autoload_register ([ callback $autoload_function ] ) 将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。 如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中。因为 spl_autoload_register()函数会将Zend Engine中的__autoload函数取代为spl_autoload()或 spl_autoload_call()。 参数 autoload_function 欲注册自动装载函数。如果没有提供任何参数,则自动注册autoload的默认实现函数 spl_autoload()。 返回值 如果成功则返回 TRUE,失败则返回 FALSE。 注:SPL是Standard PHP Library(标准PHP库)的缩写。它是PHP5引入的一个扩展库,其主要功能包括autoload机制的实现及包括各种Iterator接口或类。SPL autoload机制的实现是通过将函数指针autoload_func指向自己实现的具有自动装载功能函数来实现的。SPL有两个不同的函数spl_autoload,spl_autoload_call,通过将autoload_func指向这两个不同的函数地址来实现不同的自动加载机制。

代码如下:

test.class.PHP

PHP;">

load.PHP

PHP;">

spl_autoload_register装载函数的正确写法

AutoLoading\loading

PHP;"> PHP namespace AutoLoading;

class Loadind {
public static function autoload($className){
//根据PSR-O的第4点 把 \ 转换层(目录风格符) DIRECTORY_SEPARATOR,//便于兼容Linux文件找。Windows 下(/ 和 \)是通用的
//由于namspace 很规格,所以直接很快就能找到
$fileName = str_replace('\',DIRECTORY_SEPARATOR,DIR . '\'. $className) . '.PHP';
if (is_file($fileName)) {
require $fileName;
} else {
echo $fileName . ' is not exist'; die;
} }
}

index.PHP

PHP;"> //定义当前的目录绝对路径 define('DIR',dirname(__FILE__)); //加载这个文件 require DIR . '/loading.PHP'; //采用`命名空间`的方式注册PHP 5.3 加入的 //也必须是得是static静态方法调用,然后就像加载namespace的方式调用,注意:不能使用use spl_autoload_register("\\AutoLoading\\loading::autoload"); // 调用三个namespace类 //定位到Lib目录下的Name.PHP Lib\Name::test(); //定位到App目录下Android目录下的Name.PHP App\Android\Name::test(); //定位到App目录下Ios目录下的Name.PHP App\Ios\Name::test();
原文链接:https://www.f2er.com/php/27361.html

猜你在找的PHP相关文章