天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP 實(shí)例化類的一點(diǎn)摘記


下面是調(diào)用一個(gè)模型(Module)的函數(shù)。這個(gè)函數(shù)的基本功能是指定一個(gè)模型(抽象化為類)的名稱,然后它會(huì)在模型目錄下面尋找這個(gè)類的腳本實(shí)例化以后返回。這樣的做法有一點(diǎn)好處就是載入和實(shí)例化是自動(dòng)的,你可以獲得最大的靈活性。下面請(qǐng)看下面的代碼,它并不長(zhǎng)而且不復(fù)雜:

function &load_class($class_name, $param = null, $instantiate = true)
{
    static $objects = array();

    $class_name = ucfirst(strtolower($class_name));
    if (isset($objects[$class_name])) {
        return $objects[$class_name];
    }

    $class_file = DIR_MODELS . "/{$class_name}.inc.php";
    if (file_exists($class_file)) {
        require_once $class_file;

        if (!class_exists($class_name)) {
            return false;
        } else {
            $objects[$class_name] =& new $class_name($param);
            return $objects[$class_name];
        }

    }  else {
        if ($instantiate) {
            $objects[$class_name] = null;
        } 
        return null;
    }
}函數(shù)只有三個(gè)參數(shù),分別是 $class_name 、$param 以及 $instaniate ,其中 $param 是構(gòu)造函數(shù)的參數(shù),$instaniate 是可選的。請(qǐng)注意函數(shù)中的 $objects 數(shù)組是一個(gè)靜態(tài)變量,也就是當(dāng)調(diào)用完這個(gè)函數(shù)的時(shí)候數(shù)組并不會(huì)釋放,下次調(diào)用此函數(shù)時(shí)這個(gè)數(shù)組的數(shù)據(jù)是會(huì)保存的。這樣做的好處就是可以將大部分的類實(shí)例了以后,如需要重復(fù)調(diào)用則直接返回這個(gè)類的實(shí)例就可以了,避免了重復(fù)調(diào)用,提高了性能。代碼如下:

    static $objects = array();

    if (isset($objects[$class_name])) {
        return $objects[$class_name];
    }其它繼續(xù)的代碼就是檢測(cè)是否有這個(gè)類名稱的文件,如果有載入這個(gè)文件并尋找指定名稱的類,如找到了這個(gè)類以后就實(shí)例化。這要求腳本中類的名稱必須和腳本的文件名是一致的。我想這也有利于以后的代碼管理。

$instaniate 參數(shù)這個(gè)時(shí)候就發(fā)揮了功效,這個(gè)參數(shù)會(huì)告訴函數(shù)如果未找到則在 $objects 下面做一個(gè)標(biāo)記位(null)避免函數(shù)又重復(fù)的尋找文件名并重復(fù)載入和尋找。

    $class_file = DIR_MODELS . "/{$class_name}.inc.php";
    if (file_exists($class_file)) {
        require_once $class_file;

        if (!class_exists($class_name)) {
            return false;
        } else {
            $objects[$class_name] =& new $class_name($param);
            return $objects[$class_name];
        }

    }  else {
        if ($instantiate) {
            $objects[$class_name] = null;
        } 
        return null;
    }其中語(yǔ)句:

$objects[$class_name] =& new $class_name($param);可以多次的推敲一下。$class_name 在函數(shù)中是一個(gè)字符串變量。關(guān)鍵字 new 可以動(dòng)態(tài)的實(shí)例化指定字符串的類(如果存在的話)。有關(guān)此調(diào)用方法可以參見(jiàn) php 手冊(cè)和這里。

此函數(shù)的不足之處就是如何去考慮傳遞不同個(gè)數(shù)的參數(shù)給每個(gè)不同的類的構(gòu)造函數(shù)。或許可以使用 call_user_func_array 等函數(shù)實(shí)現(xiàn),但是這樣的做法非常的不 Grace。在這里需要推敲一下。其實(shí) file_exists 等文件存在的測(cè)試可以交給 __autoload 函數(shù)處理,不過(guò)由于其他的函數(shù)比如 interface_exists 等也會(huì)調(diào)用 __autolaod 函數(shù),出于兼容性的考慮,所以只在函數(shù)內(nèi)做一個(gè)簡(jiǎn)單的測(cè)試。

php5 相對(duì) php4 而言更加的面向?qū)ο蟆N蚁胧菚r(shí)候更新我們我們的編碼思想了。有關(guān) php5 的類和對(duì)象,這里有一個(gè)非常好的教程。

php技術(shù)PHP 實(shí)例化類的一點(diǎn)摘記,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产成人免费a在线视频app | 亚洲国产成人一区二区在线 | 国产精品亚洲二线在线播放 | 扒开胸罩揉她的乳尖视频 | 中国女人逼 | 人妻插B视频一区二区三区 人妻 中文无码 中出 | 东北女人奶大毛多水多 | 毛片网站在线观看 | 2017日日干 | 亚洲性夜色噜噜噜网站2258KK | 韩国女人高潮嗷嗷叫视频 | 久久才是精品亚洲国产 | 麻豆精品2021最新 | 公和我做好爽添厨房中文字幕 | 美女的避毛| 国产亚洲欧洲日韩在线观看 | 成人免费观看www视频 | 国产精品视频人人做人人爽 | 中字幕久久久人妻熟女天美传媒 | 红豆视频免费资源观看 | 日本特殊精油按摩 | 文中字幕一区二区三区视频播放 | 麻豆无人区乱码 | 亚洲国产精品嫩草影院永久 | 暖暖视频免费观看高清完整版 | 日本又黄又裸一级大黄裸片 | 风车动漫(p)_在线观看官网 | 一区视频免费观看 | av女优快播 | 欧洲精品一区二区不卡观看 | 少妇人妻偷人精品视蜜桃 | 大香伊蕉在人线国产最新 | 国产精品一库二库三库 | 无码国产成人777爽死 | 菠萝蜜国际一区麻豆 | 亚洲精品乱码电影在线观看 | G国产精品无马 | 亚洲乱码国产一区三区 | 暖暖视频免费高清在线观看 视频 | 久久免费资源福利资源站 | 国内精品久久人妻无码HD浪潮 |