D、F、S、C、L、A、I 他們都在functions.php這個文件家
下面我分別說明一下他們的功能
D() 加載Model類
M() 加載Model類
A() 加載Action類
L() 獲取語言定義
C() 獲取配置值 用法就是 C("這裏填寫在配置文件裏數組的下標")
S() 全局緩存配置 用法S(“這裏相當於一個唯一的標識”)
F() 快速文件數據讀取和保存 針對簡單類型數據 字符串、數組
I() 快速創建一個對象實例
以上如果有遺漏的 內部函數
ThinkPHP值得大家學習的源碼,特別是他們的中文註釋讓我們很容易就瞭解他源碼中的內容
在用thinkphp做程序時經常能用到的內部函數,對於換成這一塊用S()比較會減輕對數據庫的負擔!
在thinkphp中出了有內部還是,thinkphp還把配置文件保存爲靜態變量,在模板裏方便快速調用
如果{$Thinkphp.config.參數名稱}
如果主鍵是自動增長的,用add()的時候他會自動的返回一個插入新記錄的ID值
我們在做用戶金幣或者是積分或者是投票的時候,需要對指定的字段自加1這時候我可以可以這樣寫
$s= D('admin');$s->score='(score+1)';$s->save(); 這樣我們會剩下許多的步驟。
如果要修改指定的一個字段用簡單的辦法 D('admin')->setField('name','hehe','id=2');
D方法用於快速創建模型對象的實例,並且單例化,例如:
$User = D("User");
等效爲
$User = new UserModel();
m實例化參數是數據庫的表名.
d實例化的是你自己在model文件夾下面建立的模型文件.
D和M的區別主要在於:
M方法不需要創建模型類文件,M方法不會讀取模型類,所以默認情況下自動驗證是無效的,但是可以通過動態賦值的方式實現;
而D方法必須有創建模型類,我們可以用下面兩種方法去創建一個數據表的映射對象
第一種:$Test = D('Test')
第二種:$Test = new Model('Test')
雖然這兩種都可以對數據進行select,insert,delete,udpate操作,在數據驗證上有很大的不同,用第一種方式實例一個模型就會有數據檢查功能,如果 title 沒有填寫的話就會提示 “請輸入標題” (這個是tp提供的一個自動驗證功能,當然也需要在相應的model中定義好驗證條件);
D方法可以自動檢測模型類,不存在時他會拋出一個異常。同時對於已實例化得得模型不會再去重複實例化(單例)。
默認的D方法只能支持調用當前的項目(或者叫做應用)下的模型
例如:$user = new UserModel();
等價於$user = D('user');
如果實例化的是一個空模型
例如 $Demo = new Model();
那麼它等價於 $Demo = M();