1. 深入了解php框架mvc設計模式的原理
現在的PHP框架太多了,如yii codeigniterlaravel thinkphp 一看文檔就一大堆英文資料,學也學不過來,可是上班時候公司要求你會這個,有的要求你會那個,看書上的理論又假大空,不知道在說什麼東西,看實際的例子代碼又太復雜龐大,所以今天就做一個簡單的小例子主要來給中級階段的php同學了解MVC的共同原理,了解這些原理自己也可以設計一個mvc 框架
先創建一個主流框架的目錄,包含控制器,數據模型,視圖顯示,3個文件夾,和一個入口文件
現在來設計一個路由地址,http://localhost/mvc/index.php?c=控制器名&a=方法名¶m=參數名;然後寫在入口文件里的獲取路由的代碼,如下圖所示,這樣寫就能獲取不同的控制器名字和不同的方法,由入口文件獲取這些控制器和方法名,參數後就傳入指定的控制器方法名中
現在寫控制器的類和方法,便於接受入口文件傳入的值,控制器的作用就是協調調用數據處理和顯示樣式
現在來寫好數據處理類,數據處理主要是依靠mysql等和視圖顯示類,視圖主要就是把內容顯示出來,一般由smarty代替,數據處理文件名model.php,視圖顯示index.php
現在輸入http://localhost/mvc/index.php?c=控制器名&a=方法名¶m=參數名 看他們都顯示出來了,一個簡單的框架就完成了,大家有機會自行擴展吧!
那麼控制器和視圖,數據的關系是什麼呢?一般具體中是從入口文件得到用戶輸入的控制器和方法名,參數,再傳給用戶指定的控制器,再由控制器(a)把參數傳給數據處理(m),m處理後返回給a,a 將得到的內容傳給視圖顯示(v),v再把他顯示出來。這只是一個簡單的MVC設計模式而已,大家可以在這上面設計出比較復雜的MVC模式
2. php架構,mvc開發模式,php程序員工作~
PHP開發框架背後的思想被稱為「模型—視圖—控制器」(MVC)。MVC是這樣一種架構模式,它隔離了業務邏輯與UI,允許其一改變而另一者不受影響。(也可以說是關注點的隔離)在MVC中,模型負責數據,視圖負責表現,控制器則是程序主體或者說是負責業務邏輯。從本質上說,MVC拆分了一個程序的開發過程,這樣你就可以修改獨立的每一部分,而其他部分不受影響,這是十分重要的,它使得編寫PHP代碼更為快捷簡單
開發者可能出於不同的考慮而使用PHP開發框架,不過首當其沖的原因是為了加速開發過程。相似工程之間的代碼重用能夠節省開發者大量的時間和精力。PHP開發框架內置了預建的模塊,免去了冗長又令人厭煩的編程工作。這樣開發者就能夠把時間活在開發實際程序上,而不是每一次都要為每一個項目重建基礎模塊。
3. 如何實現PHPmvc框架里的二級聯動
js代碼
var currentShowCity=0;
$(document).ready(function(){
$("#province").change(function(){
$("#province option").each(function(i,o){
if($(this).attr("selected"))
{
$(".city").hide();
$(".city").eq(i).show();
currentShowCity=i;
}
});
});
$("#province").change();
});
function getSelectValue(){
alert("1級="+$("#province").val());
$(".city").each(function(i,o){
if(i == currentShowCity){
alert("2級="+$(".city").eq(i).val());
}
});
}
html代碼
<select id="province">
<option>----請選擇省份----</option>
<option>北京</option>
<option>上海</option>
<option>江蘇</option>
</select>
<select class="city">
<option>----請選擇城市----</option>
</select>
<select class="city">
<option>東城</option>
<option>西城</option>
<option>崇文</option>
<option>宣武</option>
<option>朝陽</option>
</select>
<select class="city">
<option>黃浦</option>
<option>盧灣</option>
<option>徐匯</option>
<option>長寧</option>
<option>靜安</option>
</select>
<select class="city">
<option>南京</option>
<option>鎮江</option>
<option>蘇州</option>
<option>南通</option>
<option>揚州</option>
</select>
4. 簡述MVC思想與PHP如何實現MVC
簡單的說就是將網站源碼分類、分層。
MVC三個字母的含義:
M:Model 模型,負責資料庫操作。
V:View 視圖,負責調用Model調取數據,再調用模板,展示出最終效果。
C:Controller 控制器,程序的入口,決定改調用哪個View,並告訴View該做什麼。
如此說來,程序的執行順序是C-V-M 或 C-M ,和MVC的名字正好相反。
5. 詳解PHP實現MVC的幾種方法
相信所有習慣了使用MVC來組織自己的項目的人,讓他選擇一個新的項目構架時,一定不會放棄MVC。傳統的面相過程式的開發方式在處理中型以上的應用時,就開始顯得力不從心。即便我們能夠快速的完成需求,但是在需求發生變更後或者進行後期維護的時候,我們會深深地陷入我們早期搭建的陷阱中。什麼是MVC?關於MVC的定義和解釋,可以說多種多樣。我們可以在Wiki或者[2]中找到更為詳盡的解釋,這里我並不打算,也沒有能力進行深入的講解,從PHP開發的角度來講,MVC可以概括為:視圖(The View):一說到視圖,我們很多人都會想到模板引擎(諸如Smarty等等)。其實就是各種各樣的輸出,比如說html模板和Javascript文件等。模塊(The Model)模塊代表了程序的邏輯,在企業應用中通常稱為業務邏輯層。一般來講,這一層完成的工作是把原始的數據處理成按照我們設計的數據結構存儲的有意義的數據序列,並將這些數據交給視圖去處理。通常情況下, 模塊中會利用一個數據抽象類來進行與數據操作有關的處理。 關於MVC的是否適合PHP的爭論也很多,人們不斷的討論MVC是否適合PHP[3],現在也已經有了很多的MVC框架,諸如PHP MVC Frameworks中列出的[4]。那麼,為什麼人們這么熱衷於MVC,我們為什麼要使用MVC在我們的設計中呢。為什麼用MVC?MVC最早是用來解決桌面GUI的編程問題,最早的MVC框架應該是Sun在1999年提出的Model 2,後來演變成了Struts。MVC帶給人們深刻的印象,但是我們在使用的過程中,卻並沒有認真的想過為什麼使用MVC。在傳統的桌面應用中,一旦Model中有時間發生,我們可以主動的讓View界面進行刷新,從而展示後台發生的變化。而在Web應用中,我們似乎限於傳統的Http的Request/Response的方式,我們似乎沒有辦法讓用戶端進行更新。這一段討論,並不是認為MVC不能夠用來進行WEB應用的開發,而是覺得從某種程度上來說,他還不是最合適的。關於使用MVC的爭論還有很多[1],但是相信所有習慣了使返嫌用MVC來組織自己的項目的人,讓他選擇一個新的項目構架時,一定不會放棄MVC。如何PHP實現MVC?下面是一個超級簡單的MVC結構實現,甚至連數據源都用了一個內置的固定數組,雖然簡單,但其實眾多的PHP Framework核心實現的思想應該和這個是差不多的,只不過一些framework提供了更多的方便開發者使用的工具,我也漏衫手想自己來實塌李現一個PHP的框架,目前正在著手策劃中,也希望自己能夠從框架的開發中學習到更多的PHP設計思想和方法。
6. PHP程序,不用框架,如何寫成MVC模式的程序呢
至於M層,即model層,是要對資料庫的操作即一些數據相關操作,可以單獨抽
出來封裝函數或者是一個類,由C層調用其中的方法來實現與頁面交互的操作請
求,所有接受或者受到的數據經過C層調用M層進行操作,並反饋C層,提示在V
層; 通俗點講,就是說你把一些具體的方法及操作資料庫的執行方法都封裝成
函數或者類,在另一個文件中,然後由C層去引用調用或者繼承,從而實現傳統
的MVC。
7. php如何實現mvc+l,思路是什麼
M model 一般是控制資料庫、資源、對象屬性的
V view 視圖,也就是給客戶呈現的UI
C controller 邏輯事務處理器,主要針對客戶端傳來的數據該怎麼處理、輸出,
L Language 國內的人比較少聽說,我們河南新社 經常給國外的客戶做,他們要求前台UI的多數文本,是可以輕松修改,或者支持多國語言。這時候,M和C就不能簡單的把文本固定寫到代碼里,而是用$this->language->get['text_customer'] 這個變數來替代以前的 "客戶"這樣一個文本;然後建立一個language庫,結構上跟MCV平行。
當然我也聽某群里的「大神」給別人解釋是lib,我是不贊同的,說到底這個大神沒有接觸到國外的業務,而國內小型業務還不要去語言分離或者多語言。如果是是lib,那就是引擎層面的了,跟mvc在結構上不是平行的,不如說 Catalog(MVC)+System(Lib+Engine)