sql_autoload_register()函数

复习__autoload的时候,看到了spl_autoload_register()这个函数。但是一下子没有弄明白,通过查资料我算是弄明白了。

1.__autoload()    ——    自动加载函数

我把很多个类文件以 类名.class.php的形式存放在class目录中,在class的同级目录中建立一个index.php。进入class目录里面分别建立class1.class.php、class2.class.php、class3.class.php文件,分别为里面的文件添加一下代码

<?php //class1.class.php中
class class1{
    public function __construct(){ 
        echo "class1";
    }
}
?>
  
<?php //class2.class.php中
class class2{
    public function __construct(){ 
        echo "class2";
    }
}
?>
  
<?php //class3.class.php中
class class3{
    public function __construct(){ 
        echo "class3";
    }
}
?>

index.php文件中写入

 1 <?php function __autoload($classname){
 2     $filename = "./class/".$classname.".class.php";
 3     if(is_file($filename)){
 4         include $filename;
 5     }
 6 }
 7  $test1 = new class1(); echo '<br/>'; $test1 = new class2(); echo '<br/>'; $test1 = new class3(); 
 8  //结果是 class1
 9 class2
10 class3
11   
12 ?>

我们成功的自动加载了class下面所有的要加载的类。

2.spl_autoload_register()    ——    注册__autoload()函数

class里面的文件不做任何改变,只是简单的改写一下index.php

 1 <?php // 写一个loadclass函数
 2 // loadclass函数不具备自动加载类的功能
 3 function loadclass($classname){
 4     $filename = "./class/".$classname.".class.php";
 5     if(is_file($filename)){
 6         include $filename;
 7     }
 8 } // spl_autoload_register()函数让这个loadclass具备了自动加载类的功能 spl_autoload_register("loadclass"); 
 9  $test1 = new class1(); echo '<br/>'; $test1 = new class2(); echo '<br/>'; $test1 = new class3();
10 ?>
原文地址:https://www.cnblogs.com/gophper/p/4397444.html