码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2019-01-31 12:56:48      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:分享图片   页面   use   class   src   struct   pre   pat   user   

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的四种处理方式

标签:分享图片   页面   use   class   src   struct   pre   pat   user   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!