php spl_autoload_register

Posted h0000dh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php spl_autoload_register相关的知识,希望对你有一定的参考价值。

spl_autoload_register  可以同时注册多个自动加载函数。

./kang/H.class.php

<?php


class H {

}

./kang/kang.php

<?php
function kangAutoload($class_name) {
echo ‘kangAutoload<br>‘;
// 先判断当前所需要加载的类,是否为当前模块的
$class_list = array(‘H‘, ‘Z‘, ‘K‘);
if (in_array($class_name, $class_list)) {
require ‘./kang/‘ . $class_name . ‘.class.php‘;
}
}
spl_autoload_register(‘kangAutoload‘);

 

 

./user/U.class.php

<?php


class U {

}

./user/user.php

<?php

function userAutoload($class_name) {
echo ‘userAutoload<br>‘;
require ‘./user/‘ . $class_name . ‘.class.php‘;
}
spl_autoload_register(‘userAutoload‘);

 

./oop_9.php

<?php


// 模块kang
// 载入模块kang.php 核心文件
require ‘./kang/kang.php‘;

$o = new H;
var_dump($o);

echo ‘<br>‘;
// 模块user
require ‘./user/user.php‘;
$b = new U; //当有两个require 的时候,会按照定义的require的先后顺序,逐次的进入
// ~~~~~~~~复制的kang.php <?php
// function kangAutoload($class_name) {
// echo ‘kangAutoload<br>‘;
// 先判断当前所需要加载的类,是否为当前模块的
// $class_list = array(‘H‘, ‘Z‘, ‘K‘);
// if (in_array($class_name, $class_list)) {
// require ‘./kang/‘ . $class_name . ‘.class.php‘;
// }
// }
// spl_autoload_register(‘kangAutoload‘);~~~~~~~~
var_dump($b);


// kangAutoload// 页面的结果:var_dump($o)的结果
// object(H)#1 (0) { } // 页面的结果:var_dump($o)的结果


// kangAutoload//页面的结果:$b = new U; 先去kang里面找,不满足if (in_array($class_name, $class_list))
// userAutoload //页面的结果:$b = new U 去./user/user.php里面找
// object(U)#2 (0) { } //页面的结果:$b = new U











































以上是关于php spl_autoload_register的主要内容,如果未能解决你的问题,请参考以下文章

PHP中spl_autoload_register函数的用法

php spl_autoload_register() 函数

php的spl_autoload_register函数的一点个人见解

php spl_autoload_register()不加载类

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

PHP自动加载上——spl_autoload_register