ThinkPHP筆記二php
在TP框架中,全部的配置文件都是自動加載的,加載的順序:慣例配置《應用配置《調試配置《模塊配置《動態配置數據庫
一、 慣例配置(ThinkPHP\Conf\convention.php),這個配置對全部的項目都適用數組
二、 應用配置(Application\Common\Conf\Config.php),這個配置對整個應用程序起做用框架
三、 調試配置(Application\Comment\Conf\debug.php),這個配置文件要本身添加。默認狀況下是不存在的函數
四、 模塊配置(Application\模塊\Conf\Conf.php),對當前模塊起做用spa
五、 動態配置 C(‘配置名’,’配置值’)debug
補充:C()函數在TP框架中用來獲取配置文件的值。調試
TP在找不到請求的操做方法的時候,會定位到_empty()方法來執行,利用這個機制,能夠實現用戶請求的操做不存在的時候統必定位到某個地方處理。對象
形式:排序
public function _empty()
{
echo 「當前操做不合法」;
}
當系統找不到控制器的時候,會定位到空控制器((EmptyController)上。空控制器的使用主要用於對錯誤頁面的提示。
1.4.1 直接實例化
例如:$info = new \Admin\Login\login
1.4.2 A()函數
A()函數用來實例化對象
1.4.3 R()函數
R()和A()使用方法基本一致,惟一不一樣的地方,R()在實例化 的時候把操做方法一塊兒傳遞過去,這樣就省略了調用操做方法 的步驟。
在配置文件中添加配置
return array(
‘TMPL_ENGINE_TYPE’=>Smarty
);
在開發一個很大的項目的時候,會有不少代碼,如何組織這些代碼就成了很大的問題,PHP經過命名空間來解決這個問題,命名空間是一個名字,用來將代碼進行邏輯分組,
命名空間是PHP5.3版本之後才支持的,命名空間能夠包含類,函數和const常量
注意的地方:第一個namespace前面不能出現任何代碼,第一個namespace必須放在最前面
命名只能包含const常量,不能包含define()常量。也就說define()常量不受命名空間的約束。
書寫示例: namespace Chine\Shandong\Jinan
一、 非限定名稱訪問
二、 徹底限定名稱訪問
三、 部分限定名稱訪問
徹底限定名稱訪問不方便書寫,維護,咱們能夠在當前的命名空間中引入指定的命名空間,而後經過部分限定名稱訪問來訪問空間元素。
引入命名空間的關鍵字是use。
若是命名空間中有類,能夠直接引入類,注意:常量和函數不能直接引入。
引入的類和當前命名空間中類名同樣,在實例化的時候沒法區分到底實例化那個類,解決方法:給引入的類取別名,用as關鍵字。
若是PHP文件中沒有namespace關鍵字聲明,則該文件元素都存在於「公共命名空間」。
訪問公共命名空間格式:」\元素」
1.針對類、函數、const常量有效,對define常量無效
2.第一個namespace前面不能有任何的代碼包括header
3.引入帶命名空間的文件,對當前文件的命名空間不產生影響
4.命名空間都是虛擬的抽象空間,不是真是存在的目錄,可是在 TP框架中,命名空間和路徑是一致的,TP將命名空間轉換成 路徑來引入類。
TP框架中內置了數據庫訪問層,把不一樣的數據庫操做都封裝起來,咱們無需針對不一樣的數據庫寫不一樣的代碼,咱們只需對公共的DB類進行操做,DB類會自動調用對應數據庫的驅動來處理。
打開convention.php文件,將數據庫配置文件拷貝到cofig.php中,更改配置
一、 模型名和表名一致,表名+Model
二、 文件名和類名一致,以.class.php結束。
三、 每個模型都要繼承基礎模型類。
若是數據庫中表名比較特殊,須要在模型層中重寫表名
情形一:重寫表名,包含表前綴
Protected $trueTableName
情形二:重寫表名,不包含表前綴
Protected $TableName
1.直接實例化
2.M()方法,至關因而new Model();M()經過傳遞表名能夠操做相 應的表,可是對象的數據類型是Model型;
3.D()方法,若是Model再也不模塊文件下,實例化的是基礎模型 類(Model),和M()同樣
若是Model在模塊下,實例化的是子類,和直接實例化子類一 樣。
一、 增 $model->add(關聯數組)
二、 改 $model->save(關聯數組)
三、 刪 $model->del($id)
四、 查 $model->select() 返回的二維數組
五、 查 $model->find() 返回一條記錄
1.按主鍵查詢 $list=model->select(查詢條件,[查詢條件2...]);
2.Where條件 $list = where()->$model->select();
3.Limit限制
例1:$list=$model->limit(2)->select(); //取前兩條記錄,從 0條開 始
例2:$list=$model->limit(2,5)->select(); //從第2條開始, 取5 條記錄
4.排序
$list =$model->order(‘數據 asc’)->select(); 按升序查詢, 默認,asc能夠省略
$list=$model->order(‘數據 desc’)->select(); 按照數據的降序查 詢
5.指定查詢字段
$list=$model->field(‘數據字段名字,[可選字段]’)-select();
6.分組查詢
$list=$model->group(‘分組條件’)->select();
7.having
having和where的區別:
Where條件查詢的字段必須數據表中存在,having條件字段必 須在結果集中存在。
8.直接執行SQL語句
經過基礎模型類的對象直接執行SQL語句。
$list = M()->query(‘select * from 表名’);
9.鏈式操做之間沒有前後順序只要將select放在最後就行。
備註:動態查詢是已經在TP框架中封裝好的方法,一次只能查詢一次記錄
$model->count() //查詢總記錄數
$model->max() //查詢記錄最大值
$model->min () //查詢記錄最小值
$model->sum() //查詢記錄的總和
$model->avg() //查詢記錄的平均值