php模型
『壹』 php MVC框架中modeL的作用
MVC概念來自傳統的桌面軟體開發,在那樣的環境下,事件發生時,Model可以主動通知View,而這在HTTP協議里是不可能的(長連接comet除外啊)。長期以來,PHP業界對MVC框架中M和C的理解和運用都是不精細的(當然,夠用就好,能滿足絕大多數業務了)。這導致MC分層不清,PHPer在寫代碼的時候沒有明確的規則,到底業務邏輯放在C里還是M里,常見的問題有:
C層承擔職責過多,如,贊一個答案是給對應回答者加聲望,寫到C裡面去了
M層太單薄,就繼承一下框架的Model(或者DB類),實現資料庫的增刪查改
非資料庫操作(如調用微博OpenAPI)只好包裝到Util類
用戶輸入($_GET,$_POST)全局亂跑,M層和Util里都有
由於大部分場景下,PHP都用來做Web應用,而且是Database Driven Application,所以,各類Database Driven的快速開發框架也應運而生,比如說,CakePHP的Model類乾脆就定義了CURD幾個針對數據表的操作,Qcodo直接根據數據表結構自動生成MVC三層的腳手架代碼。
我理解的PHP應用是5層結構,M層應再拆分為Biz Model,DAO,Infrastructure,貼幾幅圖片:
『貳』 php 做的網頁預覽三維模型的方法
1.如果選擇圖片後就上傳了,可以讓提交的form 的target指向一個iframe,就不會做整個頁面的刷新
2.如果是不想上傳,只是預覽,可以用js。
『叄』 PHP模型是干什麼的
一般指資料庫操作,當然也可以使其他的!將操作資料庫(可以是具體的表)的一些方法集中一起就形成的模型。
『肆』 ThinkPhp模型實例化報錯,找不到Model類
$user=D('User');
『伍』 thinkphp 模型類的作用
一般情況下是一個表對應一個model類,不用也是可以的。
至於你說的簡化代碼,給你舉個例子:
比如說你有一個user表,裡面有 id name pass time(登錄時間),對其的操作頁面有注冊,登錄,修改密碼等等
如果你要使用M來進行實例的話,不管是注冊還是幹啥,你每次都要對提交過來的信息是否合法進行一個驗證,time時間每次都要使用time()函數來重新生成以下
但是如果你使用了model,使用D來實例化,這些信息的驗證,和time()的完成都可以寫到model中,就不用在上面說的那些頁面當中一一進行操作驗證或者添加了。
classUserModelextendsModel
{
//使用下面的這些可以很方面對user表進行操作,省去了多次對表進行操作時候所書寫的驗證和完成之類的代碼。
//自動驗證
protected$_validate=array(
array('name','require','用戶名不能為空'),
array('name','','用戶名已存在',0,'unique',1),
array('user_pwd','require','新密碼不能是空',0,'',2),//只更新時驗證
);
//自動完成
protected$_auto=array(
array('addtime','time',1,'function'),
);
//上面的一些規則可以參考自動完成和自動驗證的規則,需要調用函數的時候,在下面自己再添加自定義的函數
}
『陸』 thinkphp 模型與控制器有什麼區別沒搞懂
MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型(M)、視圖(V)、控制器(C),它們各自處理自己的任務。
視圖 :視圖是用戶看到並與之交互的界面。對老式的Web應用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應用程序
中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術已層出不窮,它們包括Adobe
Flash和象XHTML,XML/XSL,WML等一些標識語言和Web
services。如何處理應用程序的界面變得越來越有挑戰性。MVC一個大的好處是它能為你的應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理
發生,不管這些數據是聯機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數據並允許用戶操縱的方式。
模型 :模型表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用象EJBs和ColdFusion
Components這樣的構件對象來處理資料庫。被模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能為多個視圖提供數據。由於應用於
模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。
控制器 :控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求。所以當單擊Web頁面中的超鏈接和發送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定調用哪個模型構件去處理請求,然後確定用哪個視圖來顯示模型處理返回的數據。
現在我們總結MVC的處理過程,首先控制器接收用戶的請求,並決定應該調用哪個模型來進行處理,然後模型用業務邏輯來處理用戶的請求並返回數據,最後控制器用相應的視圖格式化模型返回的數據,並通過表示層呈現給用戶。
『柒』 就關於PHP一個的模型層的問題
你需要操作user表就建一個user.class.php的類文件放在model中,在控制器中實例化user類,user類自動載入配置文件連接資料庫 。 模型層可以寫一下方法,提供給控制器用,減少重復!
『捌』 PHP中的模型是什麼啊有什麼用處啊
模型是model的意思,主要是在mvc架構中存在的一層,其作用是方便管理調用。例如你要調用用戶信息,每次都學查詢語句肯定繁鎖。而且代碼重復量大,這時模型就可以解決這個問題。把方法寫在模型里,然後在控制層調用便可
『玖』 php 模型中開始定義的變數怎麼連接
thinkPHP 只是一個框架而已,由MVC結構、一些實用的組件、類庫等構成,你應該把他當作工具來使用。它提供的功能如果能滿足你的需求,你就使用;不能的話,你可以自己添加或創造,你也可以再換一個適合你的框架(YII、CI、Laravel等等)。
thinkPHP框架還是很靈活的,MVC結構還算合理(只是M層更多的偏向DAO,應該是借鑒了許多JAVA框架的特點)。如果你想學習thinkPHP框架,建議你多參考官方的文檔以及分析框架的源碼。
如果只是想在模型中對一些數據進行簡單的判斷,不需要讀取資料庫中的數據,可以使用thinkPHP的虛擬模型:
1、繼承Model類
1
2
3
4
namespace Home\Model;
Class UserModel extends \Think\Model {
Protected $autoCheckFields = false;
}
設置autoCheckFields屬性為false後,就會關閉欄位信息的自動檢測,因為ThinkPHP採用的是惰性資料庫連接,只要你不進行資料庫查詢操作,是不會連接資料庫的。
2、不繼承Model類
1
2
3
namespace Home\Model;
Class UserModel {
}
這種方式下面自定義模型類就是一個單純的業務邏輯類,不能再使用模型的CURD操作方法,但是可以實例化其他的模型類進行相關操作,也可以在需要的時候直接實例化Db類進行資料庫操作。