四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

PHP 實例化類的一點摘記


下面是調(diào)用一個模型(Module)的函數(shù)。這個函數(shù)的基本功能是指定一個模型(抽象化為類)的名稱,然后它會在模型目錄下面尋找這個類的腳本實例化以后返回。這樣的做法有一點好處就是載入和實例化是自動的,你可以獲得最大的靈活性。下面請看下面的代碼,它并不長而且不復(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ù)只有三個參數(shù),分別是 $class_name 、$param 以及 $instaniate ,其中 $param 是構(gòu)造函數(shù)的參數(shù),$instaniate 是可選的。請注意函數(shù)中的 $objects 數(shù)組是一個靜態(tài)變量,也就是當(dāng)調(diào)用完這個函數(shù)的時候數(shù)組并不會釋放,下次調(diào)用此函數(shù)時這個數(shù)組的數(shù)據(jù)是會保存的。這樣做的好處就是可以將大部分的類實例了以后,如需要重復(fù)調(diào)用則直接返回這個類的實例就可以了,避免了重復(fù)調(diào)用,提高了性能。代碼如下:

    static $objects = array();

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

$instaniate 參數(shù)這個時候就發(fā)揮了功效,這個參數(shù)會告訴函數(shù)如果未找到則在 $objects 下面做一個標(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;
    }其中語句:

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

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

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

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

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

主站蜘蛛池模板: 女同版痴汉电车| 范冰冰性感| 日本尻逼| 睡衣派对| 烽火流金电视剧| 韩国电影《真相迷途》演员表| 我亲爱的简谱| 南北腿王| 建模软件| 牛梦尧| 爱情手册电影| 凤凰电视台| 集体生活成就我教学设计| 黄色网址在线免费播放| 运气旺的微信头像图片| 尹雪喜演的电影| 张志忠主演电视剧| 色在线播放| 避幕 电影| 北京卫视今晚节目表| 汪汪队完整版全集免费| 王雪华| 河南地图全图可放大| 金首露| 陈薇薇简介 个人资料| 科室对分级护理落实情况检查记录 | 赏金猎人日本电影完整版| 荒笛子简谱| 二年级数学下册期末测试卷| 痴汉电车排名前十番号| 《牵牛花》阅读答案| 假男假女| 太微玉清宫| 熊出没原始时代之熊心归来| 小泽电影| 免费微信对话生成器| 北京新闻频道回看| 巴洛波拉| 声优闺蜜小涵| 大奉打更人电视剧在线播放视频| 雅马哈调音台说明书|