最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2012年02月04日 16:16:46   作者:  
在使用PHP的OO模式開發(fā)系統(tǒng)時,通常大家習(xí)慣上將每個類的實(shí)現(xiàn)都存放在一個單獨(dú)的文件里,這樣會很容易實(shí)現(xiàn)對類進(jìn)行復(fù)用,同時將來維護(hù)時也很便利
這也是OO設(shè)計(jì)的基本思想之一。在PHP5之前,如果需要使用一個類,只需要直接使用include/require將其包含進(jìn)來即可。下面是一個實(shí)際的例子:
復(fù)制代碼 代碼如下:

class ClassA{
public function __construct(){
echo “ClassA load success!”;
}
}
//定義一個類ClassA,文件名為ClassA.php
class ClassA{
public function __construct(){
echo “ClassA load success!”;
}
}
class ClassB extends ClassA {
public function __construct(){
//parent::__construct();
echo “ClassB load success!”;
}
}
//定義一個類ClassB,文件名為ClassB.php,ClassB繼承ClassA
class ClassB extends ClassA {
public function __construct(){
//parent::__construct();
echo “ClassB load success!”;
}
}
定義兩個測試用的類之后,我們來編寫一個含有__autoload()方法的PHP運(yùn)行程序文件如下:
function __autoload($classname){
$classpath=”./”.$classname.'.php';
if(file_exists($classpath)){
require_once($classpath);
}
else{
echo ‘class file'.$classpath.'not found!';
}
}

$newobj = new ClassA();
$newobj = new ClassB();

這個文件的運(yùn)行是一點(diǎn)問題都沒有的,可見autoload是多么的好用啊,呵呵……
但是不得不提醒你一下幾個方面是必須要注意的。
1、如果類存在繼承關(guān)系(例如:ClassB extends ClassA),并且ClassA不在ClassB所在目錄
利用__autoload魔術(shù)函數(shù)實(shí)例化ClassB的時候就會受到一個致命錯誤:
Fatal error: Class ‘Classd' not found in ……ClassB.php on line 2,
解決方法:把所有存在extends關(guān)系的類放在同一個文件目錄下,或者在實(shí)例化一個繼承類的時候在文件中手工包含被繼承的類;
2、另外一個需要注意的是,類名和類的文件名必須一致,才能更方便的使用魔術(shù)函數(shù)__autoload;
其他需要注意的事情:
3、在CLI模式下運(yùn)行PHP腳本的話這個方法無效;
4、如果你的類名稱和用戶的輸入有關(guān)——或者依賴于用戶的輸入,一定要注意檢查輸入的文件名,例如:.././這樣的文件名是非常危險的。

相關(guān)文章

  • PHP后期靜態(tài)綁定之self::限制實(shí)例分析

    PHP后期靜態(tài)綁定之self::限制實(shí)例分析

    這篇文章主要介紹了PHP后期靜態(tài)綁定之self::限制,結(jié)合實(shí)例形式分析了php后期靜態(tài)綁定self::與static相關(guān)使用技巧,需要的朋友可以參考下
    2018-12-12
  • Win2003下IIS+PHP+MySQL+Zend配置步驟詳解

    Win2003下IIS+PHP+MySQL+Zend配置步驟詳解

    Win2003下IIS+PHP+MySQL+Zend配置步驟詳解...
    2007-05-05
  • php 設(shè)計(jì)模式之 工廠模式

    php 設(shè)計(jì)模式之 工廠模式

    用工廠模式設(shè)計(jì)數(shù)據(jù)庫操作類,本程序要運(yùn)行在PHP5.0以上,使用本程序可以方便的更換數(shù)據(jù)庫,并且可擴(kuò)展到其它數(shù)據(jù)庫平臺;在換數(shù)據(jù)庫平臺時,只是簡單的修改數(shù)據(jù)庫類型就可以了。
    2008-12-12
  • JWT登錄認(rèn)證實(shí)戰(zhàn)模擬過程全紀(jì)錄

    JWT登錄認(rèn)證實(shí)戰(zhàn)模擬過程全紀(jì)錄

    jwt是由用戶以用戶名、密碼登錄,服務(wù)端驗(yàn)證后,會生成一個token,返回給客戶端,客戶端在下次訪問的過程中攜帶這個token,服務(wù)端責(zé)每次驗(yàn)證這個token,下面這篇文章主要給大家介紹了關(guān)于JWT登錄認(rèn)證實(shí)戰(zhàn)模擬的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • PHP結(jié)構(gòu)型模式之裝飾器模式

    PHP結(jié)構(gòu)型模式之裝飾器模式

    這篇文章主要介紹了PHP結(jié)構(gòu)型模式之裝飾器模式,裝飾器模式是一種結(jié)構(gòu)型模式,它允許你在運(yùn)行時為一個對象動態(tài)地添加新的行為,而不影響其原始的行為。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它結(jié)合了透明性和多樣性
    2023-04-04
  • preg_match_all使用心得分享

    preg_match_all使用心得分享

    preg_match_all 進(jìn)行全局正則表達(dá)式匹配,這篇文章主要介紹下preg_match_all的相關(guān)資料,需要的朋友可以參考下
    2014-01-01
  • php模擬js函數(shù)unescape的函數(shù)代碼

    php模擬js函數(shù)unescape的函數(shù)代碼

    php模擬js函數(shù)unescape的函數(shù)代碼,需要的朋友可以參考下
    2012-10-10
  • PHP無法訪問遠(yuǎn)程mysql的問題分析及解決

    PHP無法訪問遠(yuǎn)程mysql的問題分析及解決

    首先說明,遠(yuǎn)程服務(wù)器是可遠(yuǎn)程訪問的,經(jīng)過一番折騰最后想到了SELINUX的問題,對比了下AB兩臺機(jī)器,果然設(shè)置不一樣!估計(jì)就是它的問題
    2013-05-05
  • php mysql操作mysql_connect連接數(shù)據(jù)庫實(shí)例詳解

    php mysql操作mysql_connect連接數(shù)據(jù)庫實(shí)例詳解

    php操作數(shù)據(jù)庫首先必須連接到指定的數(shù)據(jù)庫,連接數(shù)據(jù)庫可以使用PHP mysql_connect函數(shù),本文章向大家介紹mysql_connect函數(shù)的使用方法和實(shí)例,需要的朋友可以參考一下
    2016-12-12
  • 功能強(qiáng)大的PHP圖片處理類(水印、透明度、旋轉(zhuǎn))

    功能強(qiáng)大的PHP圖片處理類(水印、透明度、旋轉(zhuǎn))

    這篇文章主要匯總介紹了php圖片處理類(水印、透明度、縮放、銳化),非常的簡單實(shí)用,有需要的小伙伴可以參考下
    2015-10-10

最新評論

辽阳县| 定兴县| 会理县| 西林县| 射洪县| 梧州市| 望奎县| 西平县| 敦化市| 民权县| 寿阳县| 清苑县| 招远市| 逊克县| 昌黎县| 赣州市| 资阳市| 葫芦岛市| 屏山县| 泰兴市| 新晃| 常德市| 九寨沟县| 姜堰市| 青田县| 皋兰县| 宣城市| 三穗县| 彰化县| 安远县| 肥东县| 新巴尔虎左旗| 安宁市| 山阳县| 敦煌市| 乌拉特后旗| 贵溪市| 林州市| 吴桥县| 浑源县| 房山区|