萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php自動加載類__autoload()的方法

php自動加載類__autoload()的方法

本文章來給大家簡單的介紹一下關於php自動加載類__autoload()的方法,希望此方法對各位同學會有所幫助哦。

作用:當在程序中需要實例化一個類,剛好這這類又不是在本文件中,則需要用包含函數將外部文件包含進來。但是,當要用的外部類很多後,就會發現用包含函數會顯得十分的繁瑣,這是就可以用__autoload()全局函數自動加載類。

當在index.php中要使用前面三個類時,就需要寫三個例如include("name.class.php") 這樣的方法,效率會十分低,但如果使用了__autoload()函數就不用這樣麻煩了,只需要寫這樣一個函數方法就可以了:

在 PHP 5 中,不再需要這樣了。可以定義一個 __autoload() 函數,它會在試圖使用尚未被定義的類時自動調用。通過調用此函數,腳本引擎在 PHP 出錯失敗前有了最後一個機會加載所需的類。

在下例中將通過實例來說明 __autoload() 是如何使用的。


首先定義一個類ClassA,文件名為ClassA.class.php

 代碼如下 復制代碼

 class ClassA{ 

 public  function funa(){ 

   echo "classA  loaded successfully!<br>"; 

  } 

}

然後在相同目錄下再定義另一個類ClassB,文件名為ClassB.class.php,ClassB繼承ClassA

 <?php 

 代碼如下 復制代碼

 class ClassB extends ClassA { 

 public function funb(){ 

                                                       

   echo "classB also loaded successfully!<br>"; 

  } 

 }

最後在與上面兩個文件相同目錄下再定義一個autoload.php(這個文件名隨便取)

 代碼如下 復制代碼

 <?php 

function __autoload($class_name) { 

    require_once ("./".ucfirst($class_name).'.class.php');//ucfirst使類名首字母轉換為大寫 

 $obj = new ClassB(); 

$obj->funa(); 

$obj->funb(); 

?>

運行autoload.php的程序,看結果:

classA loaded successfully!

classB also loaded successfully!


例子: 文件夾下有這樣幾個文件:

User.class.php;
Person.class.php;
Message.class.php;
index.php;


我們就可以這樣操作

 代碼如下 復制代碼

index.php

function __autoload($className){     //ucfirst() 將字符串首字母變為大寫

include("ucfirst($className)".class.".php"); }

/**************

*例如:在index.php文件中實例化User.class.php中的User類,如果不存在則自動調用__autoload()函數

 代碼如下 復制代碼

*,將類名User作為參數傳入

*************/

$user=new User();

//通過自動加載類調用User.class.php文件

$person=new Person();

//通過自動加載類調用Person.class.php文件

$Message=new Message();

//通過自動加載類調用Message.classphp文件 function="" message="new" person="new" user="new">

copyright © 萬盛學電腦網 all rights reserved