php的自动加载类

来源:互联网 发布:java培训出来找工作 编辑:程序博客网 时间:2024/04/30 09:31
许多开发者在写面向对象应用的时候,为每一个类的定义写一个源文件,最大的烦恼之一就是在每个脚本的开头必须写一个长长的include列表。


在php5中,这就显得没有必要了。一旦你将要使用一个还没有实例化(定义)的类或接口,你就可以用__autoload函数来实现,__autoload函数是自动调用的。在脚本中通过


使用这个函数,脚本就会自动加载所需要的类。


举例说明:


autoload.php如下:


<?php
function __autoload($class_name) {
    include $class_name . '.php';
}


$obj  = new MyClass1();//这里打印出calss1
$obj2 = new MyClass2(); //这里打印出class2


echo $myclass1::$a; //这里打印出aaa
echo $myclass2::$b;//这里打印出bbb
?>


myclass1.php如下:


<?php
    class MyClass1{
        public static $a='aaa';
        function __construct(){
   echo 'class1';

}
   
   
    }
?>


myclass2.php如下


<?php
    class MyClass2{
   public static $b="bbb";
   function __construct(){
   echo 'class2';


}



}
?>


上面所有PHP文件都是在同一目录下,如果需要加载的类在不同的目录下,举例说明:


autoload.php如下:


<?php
function __autoload($class_name) {
    autoload($class_name);
}


function autoload($class_name){
    $arr=array(
   'myclass1'=>'myclass1.php',
'myclass2'=>'myclass2.php',
'myclass3'=>'yimei/myclass3.php');

include $arr[$class_name];


}




//$obj  = new MyClass1();
//$obj2 = new MyClass2(); 
echo myclass1::$a.'<br>';
echo myclass2::$b.'<br>';
echo myclass3::$c.'<br>';
?>


myclass3.php如下:
<?php
   class myclass3{
       public static $c='1111';
       function __construct(){
  
      
  }
   
   }
?>