<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    common.inc.php文件21-32行代碼分析

    <?php
    /*步。
    哈哈。我們要懂模仿。 */
     
    @extract($_POST, EXTR_OVERWRITE);
    @extract($_GET, EXTR_OVERWRITE);
    /**
    嘿。 extract 前面加個 @雞蛋做什么呢??抑制錯誤的。還不懂的話。自己百度了。
    為什么用extract()函數(shù)呢. 他就是把$_GET、$_POST中的內(nèi)容變成變量的形式,平時我們程序 是不是要常使用 $_POST $_GET來獲取傳遞的變量呀。是不是感覺賊麻煩呀。
    比如 $_POST['xx'] 這樣接受是挺好。但寫多了很麻煩是吧。我是感覺麻煩。我現(xiàn)在想直接就 $xx就可以獲取傳遞過來的東西。那怎么辦呢。
    就用了 extract()函數(shù)來實(shí)現(xiàn)這么一個技巧。參數(shù):EXTR_OVERWRITE的意思是如果有沖突,覆蓋已有的變量。 這個技巧在discuz 論壇上也有應(yīng)用。
    */
    unset($_POST, $_GET);
    /**
    unset() 好處不用說了吧。 釋放 $_POST $_GET 數(shù)組 ,因?yàn)橐呀?jīng)不需要他們了。 
    明天放假了.今天在寫點(diǎn)羅.放假沒空寫了.要陪老婆,大家看了有什么不明白的.可以跟帖問.我懂的我會回答.謝謝
    繼續(xù)::
     
    2007-12-21
     
    吃完中午開始分析了點(diǎn)代碼.時間不多.復(fù)制PHP內(nèi)容到剪貼板PHP代碼: */
     
    require PHPCMS_ROOT.'/config.inc.php';
    /**
    加裁整站的配置參數(shù)文件。一般的程序都會有這個文件。做什么的呢?比如一些數(shù)據(jù)庫連接地址。用戶名,密碼等。需要用到的參數(shù)都定義在這個文件里面。這樣以后配置變了。我們只要改動下這個文件里面的
    變量值就好。是不是很方便呢。呵呵. 在這里說下 require() 這個加載函數(shù)。 require 和 include 都是用來加載其他PHP文件用的。但他們是有區(qū)別的。 require 函數(shù):是"預(yù)解釋"函數(shù)。就是程序一加載,就執(zhí)行了require函數(shù)。而include 呢。是個過程加載函數(shù)。我們可以在邏輯里比如: if 里面使用include 來動態(tài)的加載其他程序片段。而require 就不行。
    */
    require PHPCMS_ROOT.'/languages/'.$CONFIG['language'].'/phpcms.lang.php';
    /**
    顧名思義: 這個就是加載語言包了。PHP的國際化目前做得最多的。就是直接用PHP文件來實(shí)現(xiàn)。 在 phpcms.lang.php 文件里面定義程序中要用到的中文信息。然后在程序一開始就加載。那里程序里面
    就可以使用這個文件里面的變量和一切。那么就簡單了。模板上就不需要直接寫中文信息了。直接用這個文件里面定義的變量等來替換。從而實(shí)現(xiàn)國際化。over!!!最好自己打開這個語言文件再加上自己思考下。就知道。原來如此簡單。
    */
    define('PHPCMS_PATH', $CONFIG['rootpath']);
    define('PHPCMS_CACHEDIR', $CONFIG['cachedir']);
    /**
    $CONFIG['rootpath'] 這個就是全局配置文件 config.inc.php 文件里面數(shù)據(jù)庫信息。等全部配置信息。在這里把他們定義為 常量。 為什么需要定義為常量呢。因?yàn)樽髡吒杏X這樣寫爽羅。呵呵。其實(shí)因?yàn)楹竺?
    用到這兩個變量多。所以干脆定義為常量。方便使用。再多說一個技巧: $CONFIG['rootpath'] 其實(shí)也可以寫成 $CONFIG[rootpath] 但是最好不要這樣。為什么呢。因?yàn)椋校龋幸鏁扰袛?rootpath 是不是常量。如果不是才會認(rèn)定    $CONFIG[rootpath] 是數(shù)組。 這樣性能上就差了一點(diǎn)點(diǎn)了。 再多說一個技巧: 為什么程序多數(shù)都用 '' 單引號呢而不用 "" 雙引號呢。因?yàn)檫@樣效率好, "" 雙引號。
    php引擎還會先檢查里面是否有變量,如果有就解釋。而 '' 單引號不會做這一步的檢查。而直接就當(dāng)成字符竄了。所以效率上也會有一點(diǎn)點(diǎn)影響哦。
    */
    $CONFIG['enablephplog'] ? set_error_handler('phpcms_error') : error_reporting(E_ERROR | E_WARNING | E_PARSE);
    /*$CONFIG['enablephplog'] 是否開啟錯誤日志設(shè)置。這個設(shè)置在全局配置文件里面.config.inc.php 。 這里使用了 三目運(yùn)算符   偶最喜歡用了。一些簡短的邏輯判斷。可以使用 ? : ; 來實(shí)現(xiàn)比較簡潔
    set_error_handler() 這個函數(shù)就大有來頭了。php4里面的典型自定義程序出錯后行為的一個函數(shù)。十分好用。怎么用呢? set_error_handler(函數(shù)) 的參數(shù)也是一個函數(shù)。這個函數(shù)。反映了程序出錯后行為的。
    phpcms_error 函數(shù)存在,set_error_handler就是用用戶自定義的錯誤處理函數(shù)來處理程序中的錯誤,phpcms_error 在global.func.php 全局函數(shù)里面。
    */
     
    function phpcms_error($errno, $errmsg, $filename, $linenum, $vars)
    {
    $filename = str_replace(PHPCMS_ROOT, '.', $filename);
    $filename = str_replace("\\", '/', $filename); //  把win平臺的 \\ 換成  /兼容常見系統(tǒng)的路徑
    if(!defined('E_STRICT')) define('E_STRICT', 2048);
    $dt = date('Y-m-d H:i:s');
    $errortype = array (  
    E_ERROR => 'Error',
    E_WARNING => 'Warning',
    E_PARSE => 'Parsing Error',
    E_NOTICE => 'Notice',
    E_CORE_ERROR => 'Core Error',
    E_CORE_WARNING => 'Core Warning',
    E_COMPILE_ERROR => 'Compile Error',
    E_COMPILE_WARNING => 'Compile Warning',
    E_USER_ERROR => 'User Error',
    E_USER_WARNING => 'User Warning',
    E_USER_NOTICE => 'User Notice',
    E_STRICT => 'Runtime Notice'
    );
    $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
    $err = "<errorentry>\n";
    $err .= "\t<datetime>" . $dt . "</datetime>\n";
    $err .= "\t<errornum>" . $errno . "</errornum>\n";
    $err .= "\t<errortype>" . $errortype[$errno] . "</errortype>\n";
    $err .= "\t<errormsg>" . $errmsg . "</errormsg>\n";
    $err .= "\t<scriptname>" . $filename . "</scriptname>\n";
    $err .= "\t<scriptlinenum>" . $linenum . "</scriptlinenum>\n";
    if (in_array($errno, $user_errors))
    {
    $err .= "\t<vartrace>" . wddx_serialize_value($vars, "Variables") . "</vartrace>\n";
    }
    $err .= "</errorentry>\n\n";
    echo $err;
    error_log($err, 3, PHPCMS_ROOT.'/data/php_error_log.xml');
    chmod(PHPCMS_ROOT.'/data/php_error_log.xml', 0777);
    }
    /*就是這個鳥蛋。 現(xiàn)在我們慢慢來干掉他。呵呵  這個自定義出錯信息函數(shù)默認(rèn)帶有四個參數(shù)。 第一個參數(shù) $errno 是程序出錯的等級。 第二參數(shù)是程序出錯的界面信息。第三是出現(xiàn)錯誤的程序文件名。
    第四是 第幾行出現(xiàn)錯誤。第五個參數(shù)。要不要都行是當(dāng)前變量狀態(tài)的快照.看吧。我們有這些信息后。想定義怎么樣的錯誤信息給客戶看都很容易了是吧?但現(xiàn)在我們是要上一
    */
    ?>

    posted on 2008-12-10 00:42 丁克設(shè)計 閱讀(256) 評論(0)  編輯  收藏 所屬分類: PHPCMS整站代碼講解

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    留言簿(6)

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 亚洲片国产一区一级在线观看| 中文字幕不卡免费高清视频| 亚洲一区二区三区免费在线观看| 亚洲精品午夜国产VA久久成人| 国产精品hd免费观看| 91精品国产免费| 亚洲AV成人无码久久精品老人| 亚洲视频手机在线| 2021在线观看视频精品免费| 亚洲欧洲日产国码二区首页| 免费看成人AA片无码视频羞羞网| 亚洲AV无码无限在线观看不卡| 免费特级黄毛片在线成人观看| 在线观看亚洲专区| 猫咪免费人成网站在线观看| 亚洲一卡二卡三卡| 国产最新凸凹视频免费| 亚洲色偷偷偷网站色偷一区| 曰曰鲁夜夜免费播放视频| 亚洲欧洲av综合色无码| 亚洲国产精品尤物YW在线观看| 狠狠躁狠狠爱免费视频无码| 亚洲成年轻人电影网站www | 毛片免费全部播放一级| 亚洲大尺度无码专区尤物| 久久成人a毛片免费观看网站| 亚洲情侣偷拍精品| 国产免费一区二区视频| 亚洲国产精品成人综合色在线婷婷| 女性自慰aⅴ片高清免费| 五月天国产成人AV免费观看| 免费不卡中文字幕在线| 一个人看的免费高清视频日本| 91亚洲导航深夜福利| 国产小视频在线免费| 国产午夜无码精品免费看| 亚洲中文字幕无码av| 亚洲乱码中文字幕综合| 菠萝菠萝蜜在线免费视频| 亚洲AV无码一区二区二三区软件 | 亚洲sm另类一区二区三区|