全局命名服務(GlobalNamingServices) 命名服務類似於電話薄和網上的用戶服務目錄。全局命名服務可以跟蹤企業計算系統或跨躍全球的網上用戶和服務。Internet標準委員會正在研究把開放系統互連(OSI)的X.500全局命名服務,作為一種方法為每一個連到網上的用戶提供查詢服務。
基本介紹
- 中文名:全局命名服務
- 外文名:GlobalNamingServices
- 分類:網際網路命名
全局命名服務定義,全局函式的命名規則,類的命名規則,優點,缺點,變數和常量命名,全局變數和常量,臨時變數,模版變數,FleaPHP 的目錄結構,優點,缺點,
全局命名服務定義
命名規範和目錄結構 Posted on 星期三 9 一月 2008
2007-10-15 17:00
FleaPHP 的命名規則和目錄結構初看上去比較複雜,但習慣以後,你會發現這種命名規則帶來許多好處。因此像 Zend Framework 也是採用同樣的做法。
全局函式的命名規則
全局函式的命名規則是用“_”分隔全小寫的單詞。例如 get_cache()。同時,函式的名字採用“動詞+賓語”的形式。例如 write(動詞)_cache(賓語)。
不過有些全局函式為了和 PHP 中已有的類似函式保持一致,採用了不同的命名方式(順便抱怨一下,PHP 自身的全局函式命名比較混亂,各種形式的都有)。
類的命名規則
所有 FleaPHP 自帶的類,都以 FLEA_ 開頭。然後根據用途命名。例如 FLEA_Controller_Action、FLEA_Helper_ImgCode。然後將類名字中的“_”替換為目錄分隔設定,就是這個類的定義檔案所在位置。
舉例:
FLEA_Controller_Action 類,保存檔案為 FLEA/Controller/Action.php
FLEA_Db_TableDataGateway 類,保存檔案為 FLEA/Db/TableDataGateway.php
這種命名規則和目錄結構的優缺點如下:
優點
避免命名衝突
根據類名字就能找到檔案存放位置
如果使用 PHP5,可以很方便的用 __autoload() 來自動載入需要的類定義:
>?php
function __autoload($className) {
FLEA::loadClass($className, true);
}
缺點
類名字較長,不便於輸入,例如 FLEA_Rbac_UsersManager
也許和現有習慣不同,需要時間來適應
對於第一個缺點,使用 Zend Development Environment 或者 Eclipse 這樣的 IDE 可以緩解。這些 IDE 提供強大的輸入自動完成功能,通常輸入類名字的開頭幾個字母,就會顯示候選列表讓開發者選擇。
變數和常量命名
全局變數和常量
全局變數和常量都使用全大寫,以“_”分隔。例如 $GLOBALS[’CLASS_PATH’] 和 FLEA_DIR。不過 FleaPHP 中儘量避免了使用全局變數和常量,因此一般來說不會和應用程式產生衝突。
臨時變數
函式、類方法中使用的變數都是臨時變數,命名規則是第一個單詞小寫,後續的單詞第一個字母大寫。例如 $requestFilters、$dispatcherClass 等。
模版變數
之所以要把模版變數單獨列出來,是因為不同的模版引擎對變數名有不同的規範。從我個人來說,我傾向於模版變數使用全小寫單詞,並以“_”分隔,例如 $latest_products_list。這樣在程式裡面一眼就能看出哪些變數是用於模版的。
FleaPHP 的目錄結構
一個典型的 FleaPHP 應用程式具有如下的目錄結構:
這個應用程式的目錄主要分為 LIBS 和 WEBROOT。其中 LIBS 保存程式的所有代碼,而 WEBROOT 目錄下只保存用戶可以訪問的部分,例如 index.php 入口檔案、圖片、CSS 樣式表和 JS 腳本。
LIBS 下又分為 FLEA、SHARED、ADMIN、FRONT 等目錄。FLEA 目錄保存 FleaPHP 的核心檔案,而 SHARED 目錄保存應用程式前後台共享的檔案、ADMIN 目錄保存應用程式後台專有的代碼、FRONT 目錄保存前台程式專有的代碼。開發者在規劃目錄結構時,可以參照這種方式。
優點
代碼檔案放置在瀏覽器訪問不到的地方,提高了安全性
程式設計師和設計人員可以在不同的目錄工作,降低了發生衝突的幾率
目錄結構更清晰,容易理解
缺點
而主要的缺點就是需要修改伺服器設定,將網站根目錄指向 WEBROOT 目錄。而有些虛擬主機不允許這樣做,或者需要聯繫伺服器管理員,比較麻煩。
對於這種目錄結構,放置在 WEBROOT 中的 index.php 入口檔案應該明確調用 FLEA::import() 將 LIBS 目錄添加到類定義搜尋路徑中。否則 FLEA::loadClass() 會找不到需要的檔案。
>?php
require(‘../LIBS/FLEA/FLEA.php’);
FLEA::import(‘../LIBS/SHARED/’);
….
FLEA::runMVC();
對於虛擬主機用戶,可以將 LIBS 目錄移動到 WEBROOT 目錄中。形成如下的目錄結構:
上圖中,所有檔案都保存在應用程式的根目錄 cdhlss 中,而代碼檔案保存在 LIBS 子目錄中。
相應的 index.php 需要修改為:
>?php
require(‘libs/FLEA/FLEA.php’);
FLEA::import(‘LIBS/APP/’);
….
FLEA::runMVC();
在實際開發中,由於 FleaPHP 並沒有強制要求命名規範和目錄結構。所以開發者可以繼續沿用自己熟悉的方式來開發應用程式。