1. 誰能幫我解釋下php的MVC框架呀用通俗易懂的語言吧,我是小白, 感激不盡!
我說個最通俗的把(大神別噴)
所謂的mvc,其實就是把代碼分開寫
一個正常的網頁,肯定是先有php運算,然後再有html顯示,你把php運算和html顯示,用2個文件分開寫,就有了最簡單的模板分類的概念
MVC一樣的意思,就是把模型控制器之類的分開寫,分開寫的好處很多,在這里不多說,道理想想就明白,細分後分配工作就簡單
2. 簡述MVC思想與PHP如何實現MVC
簡單的說就是將網站源碼分類、分層。
MVC三個字母的含義:
M:Model 模型,負責資料庫操作。
V:View 視圖,負責調用Model調取數據,再調用模板,展示出最終效果。
C:Controller 控制器,程序的入口,決定改調用哪個View,並告訴View該做什麼。
如此說來,程序的執行順序是C-V-M 或 C-M ,和MVC的名字正好相反。
3. 如何入門一個PHP MVC框架
一。選擇 一個框架
至於選哪一種框架,主要看個人,1)最好是身邊朋友都有人在用,因為你不懂的時候方便解決。有時候論壇,手冊上的解答你未必理解的通透,特別是沒有接觸過框架的phper來說,更是不知所雲。2)選擇此框架論壇比較活躍的,這是身有同感,前一段時間玩qeephp框架的時間,論壇冷冷清清的,工作需要,沒辦法,只能硬著上了,遇到問題的時候,回答的問題的人很少,同時手冊之類只寫了某部分,還有很多部分並沒有寫上去。對於一個新手來說,直接KO了。
二。熟悉資料庫的操作
每一個框架都有自己的操作方法,這是必須要學會的。select,delete,insert,update這幾種用法摸熟。最快的方法是看手冊,查找對應的操作。同時要知道其中的調試方法,你就可以看到原生的操作有沒有錯誤。基本都會了,這個框架至少可以開始開發項目了。
三。論壇官方網站
這個很重要,先看手冊,遇到問題先在論壇里查找一下有沒有人遇到過你這種情況,有就不用發問了。然後同一個問題,很少人再去回答一遍。有時候遇到自己能解決的問題,也回答一下,這樣可以加深你的理解,不要覺得浪費你的時間,這前提是你有時間的情況下。所以本著人人為我,我為人人的精神
四。下載一個案例。
我經常是這樣,不知道某個功能怎樣調用的時候,直接找案例里相對應的功能看代碼,看人家是怎樣調用的,再加上自己的見解。
五。手冊的類
MVC一般都有自帶一些類了,方便用戶操作,有了自己就不用再寫對應的代碼了。
六。要有「拿來主義」精神
別人的東西,你自己融會貫通了,東西就是你的了。
4. 什麼是MVCPHP
MVC由Model(模型),view(視圖)和Controller(控制器)組成,PHP MVC可以更高效地管理好3個不同層的PHP代碼。
Model:數據信息存取層。
View:view層負責將應用的數據以特定的方式展現在界面上。
Controller:通常控制器負責從視圖讀取數據,控制用戶輸入,並向模型發送數據。
5. 深入了解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模式
6. 什麼是MVC以及PHP怎樣實現MVC
其實你的問題一開始就問錯了,即然你問了,我就隨便說說好了。
MVC 是一種設計風格,並不是一種具體手法。每個人寫代碼都有自己習慣的一種設計風格。MVC 是應用程序開發常用的一種風格,實際上並不適合 PHP,因為 PHP 的工作環境註定了它很難做出像樣的控制器,也就是 Controll 。
MVC 本來的設計風格是:整個系統由一個程序啟動,再根據用戶操作調用各個處理模塊,根據數據結果來決定顯示成什麼樣給用戶看。就像我們平時用的各種程序的主界面。這樣程序員創建好主程序以後,只要把注意力集中在開發各個子功能上就可以了。。
可是 php 大多數情況下工作於 web 環境,有「頁」的概念,每次執行都是一個新的請求。這就註定了很難實現真正的 MVC,因為用戶看到頁面時,PHP 已經執行完了,不可能再切換去調另一個 模型M 和 視圖V 。
目前自稱 MVC 的各種框架。也只不過是用一個程序判斷請求,載入不同的功能塊。只能稱之為「單點入口」,在思路上是「請求相同的部份,而包含不同的部份」。這個入口程序實際上啥也沒做,所以算不上是 MVC。反而 JS 開發的富客戶端更接近一些。由一個 JS 主程序,跟據用戶請求決定調用哪些數據,再把界面改變成什麼樣。
設計風格是前人總結出來的東西,在當前語言,當然環境,當前思維方式下。比較容易繼續思考的一種設計方式。MVC 只不過是其中一種,而且並不是最適合 PHP 的一種。偏偏被炒作得好像標准似的。。
如果你一定要, 就去看一下 「PHP 單點入口實現」吧,已經是比較接近的東西了。如果一次性的控制器也能算控制器的話……
7. php怎麼實現mvc
MVC三個字母的含義:
M:Model 模型,負責資料庫操作。
V:View 視圖,負責調用Model調取數據,再調用模板,展示出最終效果。
C:Controller 控制器,程序的入口,決定改調用哪個View,並告訴View該做什麼。
下面是一個超級簡單的MVC結構實現:
Controller.php
include'Model.php';
include'View.php';
classController{
private$model='';
private$view='';
publicfunctionController(){
$this->model=newModel();
$this->view=newView();
}
publicfunctiondoAction($method='defaultMethod',$params=array()){
if(empty($method)){
$this->defaultMethod();
}elseif(method_exists($this,$method)){
call_user_func(array($this,$method),$params);
}else{
$this->nonexisting_method();
}
}
publicfunctionlink_page($name=''){
$links=$this->model->getLinks();
$this->view->display($links);
$result=$this->model->getResult($name);
$this->view->display($result);
}
publicfunctiondefaultMethod(){
$this->br();
echo"Thisisthedefaultmethod.";
}
publicfunctionnonexisting_method(){
$this->br();
echo"Thisisthenoexistingmethod.";
}
publicfunctionbr(){
echo"<br/>";
}
}
$controller=newController();
$controller->doAction('link_page','b');
$controller->doAction();
Model.php
classModel{
private$database=array(
"a"=>"helloworld",
"b"=>"okwelldone",
"c"=>"goodbye",
);
//@TODOconnectthedatabase
//runthequeryandgettheresult
publicfunctiongetResult($name){
if(empty($name)){
returnFALSE;
}
if(in_array($name,array_keys($this->database))){
return$this->database[$name];
}
}
publicfunctiongetLinks(){
$links="<ahref='#'>LinkA</a> ";
$links.="<ahref='#'>LinkB</a> ";
$links.="<ahref='#'>LinkC</a> ";
return$links;
}
}
View.php
classView{
publicfunctiondisplay($output){
//ob_start();
echo$output;
}
}
8. PHP程序,不用框架,如何寫成MVC模式的程序呢
至於M層,即model層,是要對資料庫的操作即一些數據相關操作,可以單獨抽
出來封裝函數或者是一個類,由C層調用其中的方法來實現與頁面交互的操作請
求,所有接受或者受到的數據經過C層調用M層進行操作,並反饋C層,提示在V
層; 通俗點講,就是說你把一些具體的方法及操作資料庫的執行方法都封裝成
函數或者類,在另一個文件中,然後由C層去引用調用或者繼承,從而實現傳統
的MVC。