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

首頁(yè) > 語(yǔ)言 > PHP > 正文

php中__autoload()方法詳解

2024-09-04 11:43:45
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

PHP在魔術(shù)函數(shù)__autoload()方法出現(xiàn)以前,如果你要在一個(gè)程序文件中實(shí)例化100個(gè)對(duì)象,那么你必須用include或者require包含進(jìn)來(lái)100個(gè)類文件,或者你把這100個(gè)類定義在同一個(gè)類文件中——相信這個(gè)文件一定會(huì)非常大.

但是__autoload()方法出來(lái)了,以后就不必為此大傷腦筋了,這個(gè)類會(huì)在你實(shí)例化對(duì)象之前自動(dòng)加載制定的文件.

下邊我們通過(guò)一個(gè)例子來(lái)看一下,具體的使用方法,并在稍后說(shuō)明使用PHP魔術(shù)函數(shù)__autoload應(yīng)該注意些什么,代碼如下:

  1.  //定義一個(gè)類ClassA,文件名為ClassA.php 
  2. class ClassA{ 
  3.  public  function __construct(){ 
  4.   echo "ClassA load success!"
  5.  } 
  6.  
  7.  //定義一個(gè)類ClassB,文件名為ClassB.php,ClassB繼承ClassA 
  8. class ClassB extends ClassA { 
  9.  public function __construct(){ 
  10.   //parent::__construct(); 
  11.   echo "ClassB load success!"
  12.  } 

定義兩個(gè)測(cè)試用的類之后,我們來(lái)編寫一個(gè)含有__autoload()方法的PHP運(yùn)行程序文件如下:

  1.  function __autoload($classname){ 
  2.  $classpath="./".$classname.'.php'
  3.  if(file_exists($classpath)){ 
  4.   require_once($classpath); 
  5.  } 
  6.  else
  7.   echo 'class file'.$classpath.'not found!'
  8.  } 
  9.  
  10. $newobj = new ClassA(); 
  11. $newobj = new ClassB(); 

這個(gè)文件的運(yùn)行是一點(diǎn)問(wèn)題都沒(méi)有的,可見(jiàn)autoload是多么的好用啊,呵呵……但是不得不提醒你一下幾個(gè)方面是必須要注意的.

1、如果類存在繼承關(guān)系(例如:ClassB extends ClassA),并且ClassA不在ClassB所在目錄,利用__autoload魔術(shù)函數(shù)實(shí)例化ClassB的時(shí)候就會(huì)受到一個(gè)致命錯(cuò)誤,代碼如下:

Fatal error: Class ‘Classd’ not found in ……ClassB.php on line 2, 

解決方法:把所有存在extends關(guān)系的類放在同一個(gè)文件目錄下,或者在實(shí)例化一個(gè)繼承類的時(shí)候在文件中手工包含被繼承的類.

2、另外一個(gè)需要注意的是,類名和類的文件名必須一致,才能更方便的使用魔術(shù)函數(shù)__autoload;

其他需要注意的事情:

3、在CLI模式下運(yùn)行PHP腳本的話這個(gè)方法無(wú)效.

4、如果你的類名稱和用戶的輸入有關(guān)——或者依賴于用戶的輸入,一定要注意檢查輸入的文件名,例如:.././這樣的文件名是非常危險(xiǎn)的.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 卢湾区| 章丘市| 金门县| 新沂市| 昭苏县| 承德市| 金华市| 榕江县| 扎鲁特旗| 光山县| 黄骅市| 四川省| 仪征市| 太保市| 岚皋县| 阿拉善右旗| 清丰县| 藁城市| 思南县| 宁都县| 延川县| 蒲江县| 台安县| 温泉县| 镇宁| 徐闻县| 定日县| 海宁市| 福清市| 长岛县| 通许县| 滁州市| 济宁市| 阿合奇县| 保定市| 格尔木市| 昆山市| 项城市| 岳池县| 元谋县| 左权县|