王林
摘 要:在互聯(lián)網迅猛發(fā)展的今天,各種網站平臺層出不窮,技術手段也不盡相同,如JSP、ASP、PHP等都占有相當?shù)氖袌龇蓊~。對于PHP的開源免費高效率,更加受到了開發(fā)人員的青睞,而基于PHP的CMS(內容管理系統(tǒng))也得長足的發(fā)展。本文主要針對XDCMS這個相對簡單的內容管理系統(tǒng)來剖析CMS系統(tǒng)的原理,給PHP初學人員一些借鑒和思路。
1 引言
CMS(內容管理系統(tǒng)),主要實現(xiàn)新聞內容的發(fā)布、修改、刪除等操作。主要模塊分為:會員模塊、內容管理模塊、文件上傳模塊、無限級分類模塊(用于欄目分類)和后臺管理模塊等幾大模塊?,F(xiàn)如今主流CMS系統(tǒng)都使用smarty模版引擎技術,將變量動態(tài)分配到前臺頁面顯示,省去了前端工程師不懂后臺程序的煩惱,極大地提高了團隊協(xié)作的效率。CMS系統(tǒng)還有一大特征就是使用了數(shù)據庫,由于開源免費、執(zhí)行效率高等特征,PHP主流搭配的都是Mysql關系型數(shù)據庫,這也使得Linux、Apache、Mysql、PHP被稱為LAMP黃金組合。
2 CMS之總體架構分析
我們首先進入XDcms系統(tǒng)文件來剖析一下它的目錄結構:index.php是系統(tǒng)的主入口文件,admin為后臺目錄,cache為系統(tǒng)緩存文件目錄,data為系統(tǒng)數(shù)據庫目錄,system為XDcms框架主目錄,uploadfile為上傳文件目錄。系統(tǒng)在運行時(如在瀏覽器地址欄輸入:http://localhost/xdcms回車進入),首先通過Apache服務器解析,判斷系統(tǒng)的運行環(huán)境,如果系統(tǒng)中存在data/config.inc.php文件,則該系統(tǒng)已成功安裝,否則系統(tǒng)進入install/index.php文件執(zhí)行安裝過程,安裝過程主要是對系統(tǒng)所需要的環(huán)境進行配置的一個過程(如:數(shù)據庫服務器主機地址、數(shù)據庫賬號、數(shù)據庫密碼、數(shù)據庫名、數(shù)據庫表前綴等),安裝成功后,系統(tǒng)將自動生成相應的數(shù)據庫和數(shù)據表結構,同時在data文件夾里也相應地生成config.inc.php文件,等到系統(tǒng)下次運行時,判斷該文件已經存在,直接跳過安裝,進入系統(tǒng)正式運行過程。在現(xiàn)在所有的CMS系統(tǒng)中,都產用了include或require函數(shù)來包含文件,當服務器進行解析時會將被包含的文件拿到當前文件包含的位置執(zhí)行,這樣做既方便了操作更大大地提高了代碼的重用性。
3 CMS之關鍵技術分析
CMS之核心在于運用OOP(面向對象編程)的思想。在系統(tǒng)設計之初,程序員會將一些常用功能封裝到類里面(如:基礎類,數(shù)據庫操作類,分頁類,文件上傳類等),需要用到某個功能模塊時,通過實例化一個對象來完成所需的功能,在XDcms里系統(tǒng)的核心類文件都放在\system\libs文件夾下,所有的類文件都通過extends關鍵詞來繼承base.class.php文件里的基礎類,通過繼承來達到功能的繼承。
4 CMS之數(shù)據庫設計
數(shù)據庫在現(xiàn)如今的網站開發(fā)中起著舉足輕重的作用,它的設計成敗直接關系到整個網站的運行效率。XDcms在運行之初建立了6張數(shù)據表:c_admin為管理員表、c_category為欄目表、c_config為網站配置表、c_content為網站內容表、c_model為模型表、c_model_field為模型字段列表。系統(tǒng)通過寫在數(shù)據庫操作類(mysql.class.php)中的方法來完成數(shù)據庫的增(insert)、刪(delete)、改(update)、查(select)操作,然后將得出的結果返回給變量,然后通過smarty模版引擎技術,將變量分配到前段變量,從而使得前臺腳本能夠動態(tài)獲取后臺數(shù)據庫的數(shù)據。
5 CMS之session cookie機制
當你在瀏覽網站的時候,WEB服務器會先送一小小資料放在你的計算機上,Cookie會幫你都記錄下來。當下次你再光臨同一個網站,WEB服務器會根據上次留下的Cookie資料內容來判斷使用者,送出特定的網頁內容給你。Session與Cookie相似,只不過是一種服務器端的存儲機制。
6 CMS之前臺模板頁面
要選擇這個唯一的DIV標簽,可以通過#header選擇器來選擇,然后就能單獨定義樣式了。所有的網頁文件都應遵循W3C規(guī)范,這能大大提高瀏覽器的兼容性和執(zhí)行效率。Javascript腳本在web2.0也起到了至關重要的作用,它能實現(xiàn)人機交互的智能化,如果你在填寫一個身份證號時少填了一位,還需要等待漫長的后臺判斷過程的話,那你就OUT了。Javascript腳本可以在前段快速地幫你判斷你填寫的內容是否符合規(guī)范,極大地縮短了用戶的等待時間。7 總結
網站開發(fā)是一個復雜而精細的工程,這里以簡單的XDcms為例來講解CMS系統(tǒng),給初學者一些借鑒和思路,許多不足之處還需我們共同研究推進。網絡需要創(chuàng)新,需要不同的人去嘗試探索,向著更深更寬的方向進行擴展研究,最終推進網絡的不斷發(fā)展和進步。
[參考文獻]
[1]高洛峰.細說PHP[M].電子工業(yè)出版社.2009(1).10-01.