ThinkPHP框架二

ThinkPHP筆記二php

1.1 TP框架的配置文件

在TP框架中,全部的配置文件都是自動加載的,加載的順序:慣例配置《應用配置《調試配置《模塊配置《動態配置數據庫

一、 慣例配置(ThinkPHP\Conf\convention.php),這個配置對全部的項目都適用數組

二、 應用配置(Application\Common\Conf\Config.php),這個配置對整個應用程序起做用框架

三、 調試配置(Application\Comment\Conf\debug.php,這個配置文件要本身添加。默認狀況下是不存在的函數

四、 模塊配置(Application\模塊\Conf\Conf.php),對當前模塊起做用spa

五、 動態配置  C(配置名’,’配置值)debug

補充:C()函數在TP框架中用來獲取配置文件的值。調試

1.2 空操做

TP在找不到請求的操做方法的時候,會定位到_empty()方法來執行,利用這個機制,能夠實現用戶請求的操做不存在的時候統必定位到某個地方處理。對象

形式:排序

public function _empty()

{

echo 「當前操做不合法」;

}

1.3 空控制器

當系統找不到控制器的時候,會定位到空控制器((EmptyController)上。空控制器的使用主要用於對錯誤頁面的提示。

1.4 跨控制器調用

1.4.1 直接實例化

例如:$info = new \Admin\Login\login

1.4.2 A()函數

A()函數用來實例化對象

1.4.3 R()函數

R()A()使用方法基本一致,惟一不一樣的地方,R()在實例化 的時候把操做方法一塊兒傳遞過去,這樣就省略了調用操做方法 的步驟。

1.5  切換Smarty引擎

在配置文件中添加配置

return array(

‘TMPL_ENGINE_TYPE’=>Smarty

);

1.6  命名空間

在開發一個很大的項目的時候,會有不少代碼,如何組織這些代碼就成了很大的問題,PHP經過命名空間來解決這個問題,命名空間是一個名字,用來將代碼進行邏輯分組,

命名空間是PHP5.3版本之後才支持的,命名空間能夠包含類,函數和const常量

1.7 命名空間的聲明和使用

1.7.1經過namespace關鍵字來聲明命名空間。

注意的地方:第一個namespace前面不能出現任何代碼,第一個namespace必須放在最前面

命名只能包含const常量,不能包含define()常量。也就說define()常量不受命名空間的約束。

1.7.2 多級命名空間 

書寫示例: namespace Chine\Shandong\Jinan

1.8 空間元素的三種訪問方法

一、 非限定名稱訪問

二、 徹底限定名稱訪問

三、 部分限定名稱訪問

1.9引入命名空間

徹底限定名稱訪問不方便書寫,維護,咱們能夠在當前的命名空間中引入指定的命名空間,而後經過部分限定名稱訪問來訪問空間元素。

引入命名空間的關鍵字是use

2.0 引入類

若是命名空間中有類,能夠直接引入類,注意:常量和函數不能直接引入。

2.1 給類取別名

引入的類和當前命名空間中類名同樣,在實例化的時候沒法區分到底實例化那個類,解決方法:給引入的類取別名,用as關鍵字。

2.2 公共空間

若是PHP文件中沒有namespace關鍵字聲明,則該文件元素都存在於「公共命名空間」。

訪問公共命名空間格式:」\元素

2.3 命名空間的注意事項

1.針對類、函數、const常量有效,對define常量無效

2.第一個namespace前面不能有任何的代碼包括header

3.引入帶命名空間的文件,對當前文件的命名空間不產生影響

4.命名空間都是虛擬的抽象空間,不是真是存在的目錄,可是在 TP框架中,命名空間和路徑是一致的,TP將命名空間轉換成 路徑來引入類。

2.4 鏈接數據庫

TP框架中內置了數據庫訪問層,把不一樣的數據庫操做都封裝起來,咱們無需針對不一樣的數據庫寫不一樣的代碼,咱們只需對公共的DB類進行操做,DB類會自動調用對應數據庫的驅動來處理

打開convention.php文件,將數據庫配置文件拷貝到cofig.php中,更改配置

2.5建立Model模型類

2.5.1模型類的建立規則

一、 模型名和表名一致,表名+Model

二、 文件名和類名一致,以.class.php結束。

三、 每個模型都要繼承基礎模型類。

2.5.2 重寫表名

若是數據庫中表名比較特殊,須要在模型層中重寫表名

情形一:重寫表名,包含表前綴

Protected $trueTableName

情形二:重寫表名,不包含表前綴

Protected $TableName

2.5.3 三種實例化模型的方法

1.直接實例化 

2.M()方法,至關因而new Model();M()經過傳遞表名能夠操做相 應的表,可是對象的數據類型是Model

3.D()方法,若是Model再也不模塊文件下,實例化的是基礎模型(Model),和M()同樣

若是Model在模塊下,實例化的是子類,和直接實例化子類一 樣。

2.5.4 對錶進行操做

一、 增 $model->add(關聯數組)

二、 改 $model->save(關聯數組)

三、 刪 $model->del($id)

四、 查 $model->select() 返回的二維數組

五、 查 $model->find() 返回一條記錄

2.5.5 條件查詢

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

havingwhere的區別:

Where條件查詢的字段必須數據表中存在having條件字段必 須在結果集中存在。

8.直接執行SQL語句

經過基礎模型類的對象直接執行SQL語句

$list = M()->query(‘select * from 表名’);

9.鏈式操做之間沒有前後順序只要將select放在最後就行。

2.5.6動態查詢:語法:getBy+字段名

備註:動態查詢是已經在TP框架中封裝好的方法,一次只能查詢一次記錄

2.5.7聚合函數:

$model->count()  //查詢總記錄數

$model->max()   //查詢記錄最大值

$model->min ()   //查詢記錄最小值

$model->sum()   //查詢記錄的總和

$model->avg()   //查詢記錄的平均值

相關文章
相關標籤/搜索