PHP自动加载SPL的四种处理方式

Posted 浮尘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP自动加载SPL的四种处理方式相关的知识,希望对你有一定的参考价值。

libs目录下有3个类文件:

Test.class.php

<?php
class Test
{
    public function __construct()
    {
        echo "Loading Test.class.php <br>";
    }
}

Test.php

<?php

class Test
{
    public function __construct()
    {
        echo "Loading Test.php <br>";
    }
}

User.php

<?php

class User
{
    public function __construct()
    {
        echo "Loading User.php <br>";
    }
}

 

【方法1】

<?php

//可以传入多个参数,逗号分隔,多个相同的类名最先找到的最先匹配
spl_autoload_extensions(\'.class.php,.php\');

//设置autoload寻找php定义的类文件的目录,多个目录用PATH_SEPARATOR常量 分隔
$path = get_include_path() . PATH_SEPARATOR . "libs/";
set_include_path($path);

//autoload注册
spl_autoload_register();

new Test();
new User();

【方法2】

<?php
//定义__autoload函数,页面运行时会先执行这里面的代码
function __autoload($class_name)
{
    require_once "libs/" . $class_name . ".php";
    echo "已加载类 " . $class_name . "<br>";
}

new Test();
new User();

【方法3】

<?php
//自定义的加载类
function myLoader($class_name)
{
    require_once "libs/" . $class_name . ".php";
    echo "已加载类 " . $class_name . "<br>";
}

//将自定义的类名载入
spl_autoload_register(\'myLoader\');

new Test();
new User();

【方法4】

<?php
//自定义的加载类
function myLoader($class_name)
{
    set_include_path("libs/");
    spl_autoload($class_name);
    echo "已加载类 " . $class_name . "<br>";
}

//将自定义的类名载入
spl_autoload_register(\'myLoader\');

new Test();
new User();

 

以上四种方法都可以自动加载libs目录下面的类,运行结果如下:

 

 

【总结】

 

以上是关于PHP自动加载SPL的四种处理方式的主要内容,如果未能解决你的问题,请参考以下文章

PHP中引入文件的四种方式及区别

php中自动加载类_autoload()和spl_autoload_register()实例详解

php命名空间+spl_autoload_register实现类的自动加载

_autoload 自动加载类和spl_autoload_register()函数

现代php编程

PHP SPL使用方法 自动加载和迭代器