結合公司的框架解決MVC的分離問題、【公司的入口和解決路由分發功能(url轉為控制器和方法的使用)】 -开发者知识库

結合公司的框架解決MVC的分離問題、【公司的入口和解決路由分發功能(url轉為控制器和方法的使用)】 -开发者知识库,第1张

1.面向對象的語法需要進行一次比較細節的總結 【到面向對象之后完成了基礎語法的復習】

 

2.ecshop做電商的網站【模擬這個框架】 安裝ecshop中的upload包【進行配置:注意gd和mysql】

安裝成功之后ecshop並不兼容php-5.4以上的版本,報錯太多

【現在需要考慮的是做一套系統實現】 【另外需要參考多個框架和項目(成型的系統二次開發)了解業務和思想】

【重點】 3.設計一個框架【MVC框架思維】

(1)框架設計中的第一條思路 首先實現邏輯和顯示的分離【因為php本身是嵌入式的語言,所以使用邏輯和顯示的分離時MVC的第一方面(view和controller之間的分離)】 【但是現如今看來smarty並沒有什么優勢:因為還是嵌入了smarty式的代碼,和嵌入php代碼並沒有什么區別】 【將邏輯和view等文件分開,相互之間的訪問只能使用包含,而不能直接使用請求進行訪問(將框架中不同的業務處理的文件分離,並且放在不同的文件夾中,使得不能直接通過路徑進行查看)】 【公司首先的入口是web下,然后再web的index中,引入了指定類下的方法,實現控制器和方法的訪問控制,而保證了不會被外部http通過路徑直接訪問(這是框架設計中的重點)】

(2)邏輯代碼和模型的分離【controller和model之間的分離】 【將取數據以及數據的基本處理放在模型中,控制器主要負責將數據和視圖聯系起來】 【公司將數據處理層分為組件,然后使用組件(compentent.php)調用數據庫或者xml接口處理方法,實現數據處理層】 controller處理HTTP請求來的url,然后根據url中的參數訪問指定的compentent文件,實現數據針對性查找,然后將得到的數據,assign到view文件中。完成完整的業務邏輯

以上就實現了MVC分離的框架思維。

MVC項目分層: (1)具體的業務邏輯的實現部分【就是對數據進行具體的操作】model (2)顯示樣式的實現部分。HTML css js。叫做view (3)負責整體流程控制【從請求開始】,負責調用model和view,稱為controller

 

4.先從模型下手【model】 針對不同的數據【庫的層面】分為不同的類。【模型類】 而模型類需要構建一個基類實現模型中的公共方法,然后令其他的模型類全部繼承這個基類

【在例子中是: 子model類是對model基類進行繼承 model基類通過類調用mysqldb類進行連接初始化【這塊是單例】,將連接對象返回給model基類中的某個屬性 使用基類中的屬性在子model類中進行數據庫操作【方法使用的也是mysqldb類中的方法】 】 【實質上的原理也就是,使用基類做了一層中間類,實現公共方法】

【公司中的項目中,每一個被分開的業務都構造了一個基類。controller中controller.php和compentent.php都是基類】 在基類中實現對該分開業務中的公共成員進行初始化【子類繼承,便直接實現了這些初始化工作】

 

5.控制器處理【控制器關鍵是入口的處理!!】 將用戶的請求url轉化為控制器上指定方法的調用【這就是控制器上的入口的關鍵】

 

【公司實現入口】 【公司實現url轉化為控制器和action的方法】【重點】 【公司使用的是web中的index.php實現對url的獲取,然后根據url的不同,實例一個font對象,利用font中的dispatch方法實現轉發(該方法中實現對控制器的引入和使用控制器調用指定方法)】

 

 

 

 

 

 

 

【問題】 測試【負載測試是現在需要提高的能力】 【apache ab等並發測試如何模擬】

【重點】 【關於之前遇到單例中對數據庫連接中的認識錯誤】 【php與mysql連接的認識錯誤:http://www.nowamagic.net/librarys/veda/detail/95】 【mysql可以限制同一個用戶的連接數,也能直接限制最大連接數。mysql的連接就相當於進程間通信,或者遠程訪問也一樣進行訪問。和TCP連接也沒什么區別,也是一次請求和相應的過程】 【對php作為apache的一個模塊有一個更加深入的理解】 【關於mysql的總結:http://fengshuohlc.blog.163.com/blog/static/173470504201010283810655/

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复