學(xué)習(xí)thinkPHP的筆記

學(xué)習(xí)thinkPHP的筆記


thinkPHP的文件結(jié)構(gòu)的介紹

  • thinkPHP核心文件的介紹
    ├─ThinkPHP.php 框架入口文件
    ├─Common 框架公共文件
    ├─Conf 框架配置文件
    ├─Extend 框架擴(kuò)展目錄
    ├─Lang 核心語(yǔ)言包目錄
    ├─Lib 核心類(lèi)庫(kù)目錄
    │ ├─Behavior 核心行為類(lèi)庫(kù)
    │ ├─Core 核心基類(lèi)庫(kù)
    │ ├─Driver 內(nèi)置驅(qū)動(dòng)
    │ │ ├─Cache 內(nèi)置緩存驅(qū)動(dòng)
    │ │ ├─Db 內(nèi)置數(shù)據(jù)庫(kù)驅(qū)動(dòng)
    │ │ ├─TagLib 內(nèi)置標(biāo)簽驅(qū)動(dòng)
    │ │ └─Template 內(nèi)置模板引擎驅(qū)動(dòng)
    │ └─Template 內(nèi)置模板引擎
    └─Tpl 系統(tǒng)模板目錄

  • 項(xiàng)目的開(kāi)始(自動(dòng)生成目錄文件)

    <?php
    //確定應(yīng)用名稱(chēng) Home
    define('APP_NAME', 'Admin');
    //確定應(yīng)用路徑
    define('APP_PATH', './Admin/');
    //引用核心文件
    require './ThinkPHP/ThinkPHP.php';

項(xiàng)目目錄結(jié)構(gòu)的說(shuō)明


  • Home 前臺(tái)應(yīng)用文件夾
    ├─Common 項(xiàng)目公共文件目錄
    ├─Conf 項(xiàng)目配置目錄
    ├─Lang 項(xiàng)目語(yǔ)言目錄
    ├─Lib 項(xiàng)目類(lèi)庫(kù)目錄
    │ ├─Action Action類(lèi)庫(kù)目錄
    │ ├─Behavior 行為類(lèi)庫(kù)目錄
    │ ├─Model 模型類(lèi)庫(kù)目錄
    │ └─Widget Widget類(lèi)庫(kù)目錄
    ├─Runtime 項(xiàng)目運(yùn)行時(shí)目錄
    │ ├─Cache 模板緩存目錄
    │ ├─Data 數(shù)據(jù)緩存目錄
    │ ├─Logs 日志文件目錄
    │ └─Temp 臨時(shí)緩存目錄
    └─Tpl 項(xiàng)目模板目錄

TP訪(fǎng)問(wèn)項(xiàng)目的五種方式


  1. PATHINFO模式
    • 例:http://域名/項(xiàng)目名/入口文件/模塊名/方法名/鍵1/值1/鍵2/值2
  2. 普通模式
    • 例:http://域名/項(xiàng)目名/入口文件?m=模塊名&a=方法名&鍵1=值1&鍵2=值2
  3. REWRITE模式
    • 例:http://域名/項(xiàng)目名/模塊名/方法名/鍵1/值1/鍵2/值2
  4. 兼容模式
    • 例:http://域名/項(xiàng)目名/入口文件?s=模塊名/方法名/鍵1/值1/鍵2/值2
  5. 傳參模式
    • 例:http://域名/項(xiàng)目名/入口文件/方法名/方法的參數(shù)1/方法的參數(shù)2

關(guān)于TP的數(shù)據(jù)庫(kù)操作


    <?php
    //以下是連接數(shù)據(jù)庫(kù)的兩種方式
    //$m=new Model('user');       
    $m=M('user');           
    
    //以下是查詢(xún)操作
    
    //選取所有數(shù)據(jù)
    $arr=$m->select();  
    //獲取id號(hào)為2的單條數(shù)據(jù)
    $getOne=$m->find(2);   
    //附加條件的字段查詢(xún)
    $getZiduan = $m->where('id=2')->getField('userName'); 
    //條件查詢(xún),大于
    $data['id']=array('GT',6);
    $arr=$m->where($data)->select();
    //條件查詢(xún)冬殃,與和或
    //與
    $getZiduan = $m->where('id=2 and userName="jk"')->select(); 
    //或
    $data['id']=1;
    $data['_logic']='or';
    $getOr = $m->where($data)->select();
    
    //以下是刪除操作
    
    //單條刪除
    $m->where('userName="gogogo"')->delete();  //返回的是影響的行數(shù)
    //刪除所有數(shù)據(jù)
    $m->delete(); 
    
    // 以下是增加數(shù)據(jù)操作
    $data['userName']='myName';
    $data['sex']=0;
    $m->add();

條件查詢(xún)中關(guān)于邏輯參數(shù)


參數(shù) 作用
EQ 等于
NEQ 不等于
GT 大于
EGT 大于等于
LT 小于
ELT 小于等于
LIKE 模糊查詢(xún)

區(qū)間查詢(xún)

    $data['id']=array(array('GT',5),array('lt',8)); //表示SELECT * FROM `tp_user` WHERE ( (`id` > 5) AND (`id` < 8) )
    $data['id']=array(array('GT',5),array('lt',8),'or');//表示SELECT * FROM `tp_user` WHERE ( (`id` > 5) OR (`id` < 8) )
    
   $data['id']=array(array('GT',5),array('lt',8),'or');
   $data['userName']=array(array('LIKE','%2%'),array('LIKE','%啊%'),'or');
    //以上兩句表示SELECT * FROM `tp_user` WHERE ( (`id` > 5) OR (`id` < 8) ) AND ( (`userName` LIKE '%2%') OR (`userName` LIKE '%啊%') ) 
  • 實(shí)際上區(qū)間查詢(xún)就是兩個(gè)以上的數(shù)組組成的條件的組合忆肾,讓TP自動(dòng)生成查詢(xún)語(yǔ)句锯梁¤邓玻可以上一個(gè)點(diǎn)中提到的邏輯參數(shù)進(jìn)行選擇

統(tǒng)計(jì)查詢(xún)

    $data['userName']=array('LIKE','%啊%');
    $arr=$m->where($data)->count();
    //SELECT COUNT(*) AS tp_count FROM `tp_user` WHERE ( `userName` LIKE '%啊%' ) LIMIT 1
    
    $arr=$m->max('id');
    //SELECT MAX(id) AS tp_max FROM `tp_user` LIMIT 1
    
    $arr=$m->avg('id');
    //SELECT AVG(id) AS tp_avg FROM `tp_user` LIMIT 1
  • 統(tǒng)計(jì)查詢(xún)中嗅绸,可能用到的參數(shù)
參數(shù) 作用
count 獲取個(gè)數(shù)
max 獲取最大值
min 獲取最小值
avg 獲取平均數(shù)
sum 獲取總和

數(shù)據(jù)庫(kù)的連貫操作

參數(shù) 作用
where 查詢(xún)條件的定義
order 排序
limit 限制查詢(xún)結(jié)果
field 定義查詢(xún)的字段
table 定義要操作的數(shù)據(jù)表名稱(chēng)
group group操作
having having操作

SQL直接查詢(xún)(即不使用TP提供的任何方法)

    $m=M();         //創(chuàng)建一個(gè)不指向任何表的模塊
    $arr=$m->query('select * from tp_user where id>5');     //如果成功返回?cái)?shù)據(jù),不成功返回false
    var_dump($arr);
    
    $arr=$m->execute("insert into tp_user(userName) values('kair')");   //成功就返回影響函數(shù)断国,否則返回false
    var_dump($arr);             

向視圖文件中傳遞參數(shù)


首先贤姆,在Tpl文件下創(chuàng)建對(duì)應(yīng)控制器函數(shù)名的html文件,例子:

lib/Action/IndexAction.php

<?php
class IndexAction extends Action 
{
    public function index()
    {
        $m=M('user'); 
        $data['id']=array('GT',6);
        $arr=$m->where($data)->select();
        $this->assign('data',$arr);
        $this->display();
    }
}

tpl/User/index.html

<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title>title</title>
    </head>
    <body>
        <table border="1" width="500" align='center'>
            <tr>
                <th>id</th>
                <th>username</th>
                <th>sex</th>
                <th>操作</th>
            </tr>
            <volist name='data' id='vo'>
                <tr>
                    <td><{$vo.id}></td>
                    <td><{$vo.userName}></td>
                    <td><{$vo.sex}></td>
                    <td><a href="#">刪除</a> | <a href="#">修改</a></td>
                </tr>
            </volist>
        </table>
    </body>
</html>

關(guān)于TP的項(xiàng)目設(shè)置


  • 通過(guò)修改生成目錄下的config文件來(lái)達(dá)到項(xiàng)目修改的目的
設(shè)置 參數(shù) 例子 作用
URL_PATHINFO_DEPR 任意合法符號(hào) / 修改URL分隔符
TMPL_L_DELIM 任意符號(hào) <{ 修改左邊界符
TMPL_R_DELIM 任意符號(hào) }> 修改右邊界符
DB_TYPE 所要關(guān)聯(lián)數(shù)據(jù)庫(kù)的類(lèi)型 mysql 設(shè)置數(shù)據(jù)庫(kù)關(guān)聯(lián)的類(lèi)型
DB_HOST 主機(jī) localhost 設(shè)置主機(jī)
DB_NAME 數(shù)據(jù)庫(kù)名 thinkphp 設(shè)置數(shù)據(jù)庫(kù)
DB_USER 用戶(hù)名 數(shù)據(jù)庫(kù)的用戶(hù)名 設(shè)置用戶(hù)名
DB_PWD 密碼 數(shù)據(jù)庫(kù)的密碼 設(shè)置密碼
DB_PORT 端口 3306 設(shè)置端口
DB_PREFIX 表前綴 tp_ 設(shè)置表前綴
SHOW_PAGE_TRACE true false 開(kāi)啟頁(yè)面跟蹤
DB_DSN 數(shù)據(jù)庫(kù)的DSN參數(shù) mysql://root:@localhost:3306/thinkphp 通過(guò)DSN方式訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)
TMPL_TEMPLATE_SUFFIX 想要設(shè)置的后綴名 .html / .php 控制器讀取模板的后綴名將會(huì)改變
  • 例子
<?php
return array(
    //'配置項(xiàng)'=>'配置值'
    'TMPL_L_DELIM'=>'<{',   //修改左定界符
    'TMPL_R_DELIM'=>'}>',    //修改右定界符
    'DB_TYPE' =>'mysql',    //設(shè)置數(shù)據(jù)庫(kù)類(lèi)型
    'DB_HOST'=>'localhost',     //設(shè)置主機(jī)
    'DB_NAME'=>'thinkphp',      //設(shè)置數(shù)據(jù)庫(kù)
    'DB_USER'=>'root',      //設(shè)置用戶(hù)
    'DB_PWD'=>'',       //設(shè)置密碼
    'DB_PORT'=>'3306',      //設(shè)置端口
    'DB_PREFIX'=>'tp_',      //設(shè)置表前綴
    'SHOW_PAGE_TRACE'=>TRUE     //頁(yè)面跟蹤
);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稳衬,一起剝皮案震驚了整個(gè)濱河市霞捡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌薄疚,老刑警劉巖碧信,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異街夭,居然都是意外死亡砰碴,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)板丽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)呈枉,“玉大人,你說(shuō)我怎么就攤上這事埃碱〔瑁” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵砚殿,是天一觀(guān)的道長(zhǎng)啃憎。 經(jīng)常有香客問(wèn)我,道長(zhǎng)似炎,這世上最難降的妖魔是什么辛萍? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮名党,結(jié)果婚禮上叹阔,老公的妹妹穿的比我還像新娘。我一直安慰自己传睹,他們只是感情好耳幢,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著欧啤,像睡著了一般睛藻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邢隧,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天店印,我揣著相機(jī)與錄音,去河邊找鬼倒慧。 笑死按摘,一個(gè)胖子當(dāng)著我的面吹牛包券,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播炫贤,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼溅固,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了兰珍?” 一聲冷哼從身側(cè)響起侍郭,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掠河,沒(méi)想到半個(gè)月后亮元,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唠摹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年爆捞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勾拉。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嵌削,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出望艺,到底是詐尸還是另有隱情,我是刑警寧澤肌访,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布找默,位于F島的核電站,受9級(jí)特大地震影響吼驶,放射性物質(zhì)發(fā)生泄漏惩激。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一蟹演、第九天 我趴在偏房一處隱蔽的房頂上張望风钻。 院中可真熱鬧,春花似錦酒请、人聲如沸骡技。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)布朦。三九已至,卻和暖如春昼窗,著一層夾襖步出監(jiān)牢的瞬間是趴,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工澄惊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唆途,地道東北人富雅。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像肛搬,于是被迫代替她去往敵國(guó)和親没佑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 這里記錄的是本人學(xué)習(xí)的thinkPHP筆記官方開(kāi)發(fā)手冊(cè)http://document.thinkphp.cn/ma...
    遠(yuǎn)方的楓葉閱讀 1,429評(píng)論 0 15
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)滚婉、插件图筹、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,066評(píng)論 4 62
  • Broadcast 是 Spark 常用的特性,本文不打算介紹什么是 Broadcast 及如何使用它让腹,只希望能以...
    牛肉圓粉不加蔥閱讀 2,054評(píng)論 0 4
  • 1远剩、感恩這國(guó)慶七天過(guò)的如此這般自在,陪陪家人骇窍,看看書(shū)瓜晤,旅行,看電影腹纳,看了一部好劇痢掠。 2、感恩這個(gè)時(shí)代出產(chǎn)了這么好的...
    感恩女神詩(shī)淘閱讀 102評(píng)論 0 0
  • 時(shí)瓦日 三 紅裙子 “船槳兒搖搖嘲恍,過(guò)了十八座橋足画; 魚(yú)寶寶睡覺(jué),輕輕留下微光照佃牛; 笑啊笑啊淹辞,鏡子上有面包, 跳啊跳啊...
    好枼閱讀 191評(píng)論 0 0