thinkphp學習之路(三)

2021-08-27 06:27:31 字數 2239 閱讀 1707

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 還有的...