1.例項化基礎模型(model)類
在沒有定義任何模型的時候,可以使用下面的方法例項化乙個模型類
來進行操作
$user = new model('user');
$user->select(); // 進行其他的資料操作
或者使用m快捷方法進行例項化,其效果是相同的。
$user = m('user');
$user->select(); // 進行其他的資料操作
2.例項化其他模型類
第一種方式例項化因為沒有模型類的定義,因此很難封裝一些額外的邏輯方
法,不過大多數情況下,也許只是需要擴充套件一些通用的邏輯,那麼就可以嘗試下
面一種方法。
m方法預設是例項化model類,如果需要例項化其他模型類,可以使用:
$user = m('user', 'commonmodel');
上面的方法等效於:
$user = new commonmodel('user');
因為系統的模型類都能夠自動載入,因此不需要在例項化之前手動進行類庫
匯入操作。模型類commonmodel必須繼承model,如果沒有定義別名匯入的話
,需要放在專案model下。我們可以在commonmodel類裡面定義一些通用的
邏輯方法,就可以省去為每個資料表定義具體的模型類,如果專案的資料表超過
100個,而且大多數都是執行基本的curd操作,只是個別模型有一些複雜的業
務邏輯需要封裝,那麼第一種方式和第二種方式的結合是乙個不錯的選擇。
3.例項化使用者定義的模型(×××model)類
概述:這種情況是使用的最多的,乙個專案不可避免的需要定義自身的業務邏輯
實現,就需要針對每個資料表定義乙個模型類,例如usermodel、infomodel等
等。存放位置:定義的模型類通常都是放到專案的lib\model目錄下面。例如:
class usermodel extends model
}延伸:模型類還可以繼承乙個使用者自定義的公共模型類,而不是只能繼承model類
例項化自定義模型類的方式:
第一種:
$user = new usermodel();
$user->select(); // 進行其他的資料操作
第二種:使用d快捷方式進行例項化
$user = d('user');
$user->select(); // 進行其他的資料操作
關於使用d快捷方式進行例項化的說明:
d方法可以自動檢測模型類,不存在時系統會丟擲異常,同時對於已例項化
過的模型,不會重複去例項化。
預設的d方法只能支援呼叫當前專案的模型,如果需要跨專案呼叫
,需要使用:
$user = d('user', 'admin'); // 例項化admin專案下面的user模型
$user->select();
如果啟用模組分組功能,還可以使用:
$user = d('admin.user');
4.例項化空模型類
如果僅僅是使用原生sql查詢的話,不需要使用額外的模型類,例項化乙個
空模型類即可進行操作,例如:
$model = new model();
// 或者使用m快捷方法例項化是等效的
// $model = m();
$model->query('select * from think_user where status=1');
空模型類也支援跨專案呼叫。
thinkphp利用php 5的魔術方法機制來實現屬性的直接訪問。這也是
最常用的訪問方式,通過資料物件訪問,例如:
<?php
$user = new model('user');
$user->find(1);
echo $user->name; // 獲取name屬性的值
$user->name = 'thinkphp'; // 設定name屬性的值
?>
還有一種屬性的操作方式是通過返回陣列的方式,例如:
<?php
$type = d('type'); // 注意這裡返回的type資料是乙個陣列
$type = $type->find(1);
echo $type['name']; // 獲取type屬性的值
$type['name'] = 'thinkphp'; // 設定type屬性的值
?>
ThinkPHP「學習」之路
其實說的 學習 之路,是在寫專案的時候邊寫邊學,效率低的要死 1 今天想到的是控制器公共類,一般是命名commonaction。我在寫招生網後台的時候把所有的操作都寫在了乙個控制器裡,因為每乙個操作都需要驗證登入狀態,然後不可能把驗證的函式在每乙個控制器裡都寫一遍,so 然後我就一直覺得彆扭,而且這...
ThinkPHP3 1 3的學習之路 1
昨天開始接觸thinkphp框架,3.1.3版本的。不是最新的版本,不過還是學習它的方法和思路。1.建立入口檔案 在thinkphp同級目錄下面建立乙個index.php.require thinkphp thinkphp.php 2.在index資料夾中的lib中的action 控制器 中,編寫一...
C 學習之路三
八.類 對於物件導向語言來說,類是重頭戲,c 中類的使用和c 中類似,在細節方面有些差別.首先來看乙個c 的類的例子 例 class myclass mybasicclass 注意基類不需要寫限定符 public class mybasicclass 這裡寫出了乙個類的限定符public,c 還有的...