全局命名服務(globalnamingservices)
命名服務類似於電話薄和網上的用戶服務目錄。全局命名服務可以跟蹤企業計算係統或跨躍全球的網上用戶和服務。internet標準委員會正在研究把開放係統互連(osi)的x.500全局命名服務,作為一種方法為每一個連到網上的用戶提供查詢服務。
命名規範和目錄結構 posted on 星期三 9 一月 2008
2007-10-15 17:00
fleaphp 的命名規則和目錄結構初看上去比較復雜,但習慣以後,你會發現這種命名規則帶來許多好處。因此像 zend framework 也是采用同樣的做法。
當然,fleaphp 對於應用程序的命名規則和目錄結構沒有強製性要求。衹不過采用一致的命名規則和目錄結構,可以方便對應用程序維護。同時 fleaphp 應用程序開發者之間也可以更容易的進行協作。
--------------------------------------------------------------------------------
全局函數的命名規則
全局函數的命名規則是用“_”分隔全小寫的單詞。例如 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
這種命名規則和目錄結構的優缺點如下:
優點:
避免命名衝突
根據類名字就能找到文件存放位置
應用程序中可以使用 fleaphp 的 flea::import()、flea::loadclass() 方法方便的載入類定義文件
如果使用 php5,可以很方便的用 __autoload() 來自動載入需要的類定義:
>?php
function __autoload($classname) {
flea::loadclass($classname, true);
}
缺點:
類名字較長,不便於輸入,例如 flea_rbac_usersmanager
也許和現有習慣不同,需要時間來適應
對於第一個缺點,使用 zend development environment 或者 eclipse 這樣的 ide 可以緩解。這些 ide 提供強大的輸入自動完成功能,通常輸入類名字的開頭幾個字母,就會顯示候選列表讓開發者選擇。
--------------------------------------------------------------------------------
變量和常量命名
在 fleaphp 中,變量分為全局變量、臨時變量和模版變量三類。
全局變量和常量
全局變量和常量都使用全大寫,以“_”分隔。例如 $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 目錄。例如 www.example.com 指嚮 /example/webroot/。
這裏介紹的目錄結構有如下優點:
優點:
代碼文件放置在瀏覽器訪問不到的地方,提高了安全性
程序員和設計人員可以在不同的目錄工作,降低了發生衝突的幾率
目錄結構更清晰,容易理解
而主要的缺點就是需要修改服務器設置,將網站根目錄指嚮 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 並沒有強製要求命名規範和目錄結構。所以開發者可以繼續沿用自己熟悉的方式來開發應用程序。 |