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

1.面向對象的語法須要進行一次比較細節的總結 【到面向對象以後完成了基礎語法的複習】php

 

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

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

【如今須要考慮的是作一套系統實現】 【另外須要參考多個框架和項目(成型的系統二次開發)瞭解業務和思想】web

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

(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文件中。完成完整的業務邏輯apache

以上就實現了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/

相關文章
相關標籤/搜索