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目录下面的类,运行结果如下:

【总结】

原文地址:https://www.cnblogs.com/rxbook/p/10340875.html