国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP自動載入類文件函數(shù)__autoload的使用方法

2024-09-04 11:42:14
字體:
供稿:網(wǎng)友

開發(fā)面向?qū)ο蟮膽?yīng)用程序時,往往要對每個類的定義建立一個 PHP 源文件。這樣的做法產(chǎn)生的一個很大的煩惱就是不得不在每個腳本(每個類一個文件)開頭寫一個長長的包含文件的列表。

在PHP開發(fā)的系統(tǒng)中,當在一個文件中需要調(diào)用另一個PHP文件中聲明的類時,就需要通過include或require把這個文件引入。不過有的時候,在文件眾多的項目中,要一一將所需類的文件都包含進來,是一個讓人很頭疼的事,所以我們能不能在用到什么類的時候,再把這個類所在的php文件導入呢?這就是我們這里我們要講的自動加載類。

在 PHP 5 中,可以定義一個 __autoload()函數(shù),它會在試圖使用尚未被定義的類時自動調(diào)用,通過調(diào)用此函數(shù),腳本引擎在 PHP 出錯失敗前有了最后一個機會加載所需的類, __autoload()函數(shù)接收的一個參數(shù),就是你想加載的類的類名,所以你做項目時,在組織定義類的文件名時,需要按照一定的規(guī)則,最好以類名為中心,也可以加上統(tǒng)一的前綴或后綴形成文件名,比如 xxx_classname.php、classname_xxx.php以及就是classname.php等等。

我們以一個例子來說明一下__autoload 的使用方法,下面分別從 ClassA.php 和 ClassB.php 文件中加載 ClassA 和 ClassB 類

  1. <?php 
  2. //定義一個類ClassA,文件名為ClassA.php 
  3. class ClassA{ 
  4.  public function __construct(){ 
  5.  echo "ClassA load success!"
  6.  } 
  7. ?> 
  8.  
  9. <?php 
  10. //定義一個類ClassB,文件名為ClassB.php,ClassB繼承ClassA 
  11. class ClassB extends ClassA { 
  12.  public function __construct(){ 
  13.  echo "ClassB load success!"
  14.  } 
  15. ?> 
  16.  
  17. <?php 
  18. function __autoload($classname
  19.  $classpath="./".$classname.'.php'
  20.  if(file_exists($classpath)){ 
  21.  require_once($classpath); 
  22.  } 
  23.  else
  24.  echo 'class file'.$classpath.'not found!'
  25.  } 
  26. //ClassA類不存在時,自動調(diào)用__autoload()函數(shù),傳入?yún)?shù)”ClassA” 
  27. $obj = new ClassA(); 
  28. //ClassB類不存在時,自動調(diào)用__autoload()函數(shù),傳入?yún)?shù)”ClassB” 
  29. $obj2 = new ClassB(); 
  30. ?> 

能過上面的例子,我們發(fā)現(xiàn)在使用ClassA和ClassB時,我們并沒有手動引入ClassA.php和ClassB.php文件,但卻能正常使用這兩個類,可見__autoload是多么地好用。

但在使用__autoload時也要注意一些問題,比如上面的ClassB類,它是繼承了ClassA類,如果這時ClassA和ClassB不在同一個目錄時就會出錯,所以建議把所有存在extends關(guān)系的類放在同一個文件目錄下,或者在實例化一個繼承類的時候在文件中手工包含被繼承的類。還有一點就是在使用自動載入函數(shù)時一定要注意類名與文件名的對應(yīng)關(guān)系。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 明水县| 富顺县| 临桂县| 平遥县| 济阳县| 铁力市| 墨玉县| 新龙县| 昌江| 肥城市| 泸溪县| 常德市| 米脂县| 伊通| 铜山县| 汕尾市| 新乡市| 珲春市| 开平市| 宁安市| 大关县| 横峰县| 峨山| 光泽县| 双江| 怀仁县| 浦北县| 云阳县| 新源县| 五指山市| 淮安市| 固阳县| 巴彦淖尔市| 二手房| 类乌齐县| 甘泉县| 朝阳市| 巴南区| 牡丹江市| 长宁县| 浙江省|