學習thinkPHP的筆記

學習thinkPHP的筆記


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

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

  • 項目的開始(自動生成目錄文件)

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

項目目錄結(jié)構(gòu)的說明


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

TP訪問項目的五種方式


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

關于TP的數(shù)據(jù)庫操作


    <?php
    //以下是連接數(shù)據(jù)庫的兩種方式
    //$m=new Model('user');       
    $m=M('user');           
    
    //以下是查詢操作
    
    //選取所有數(shù)據(jù)
    $arr=$m->select();  
    //獲取id號為2的單條數(shù)據(jù)
    $getOne=$m->find(2);   
    //附加條件的字段查詢
    $getZiduan = $m->where('id=2')->getField('userName'); 
    //條件查詢,大于
    $data['id']=array('GT',6);
    $arr=$m->where($data)->select();
    //條件查詢,與和或
    //與
    $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();

條件查詢中關于邏輯參數(shù)


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

區(qū)間查詢

    $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 '%啊%') ) 
  • 實際上區(qū)間查詢就是兩個以上的數(shù)組組成的條件的組合,讓TP自動生成查詢語句??梢陨弦粋€點中提到的邏輯參數(shù)進行選擇

統(tǒng)計查詢

    $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)計查詢中,可能用到的參數(shù)
參數(shù) 作用
count 獲取個數(shù)
max 獲取最大值
min 獲取最小值
avg 獲取平均數(shù)
sum 獲取總和

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

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

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

    $m=M();         //創(chuàng)建一個不指向任何表的模塊
    $arr=$m->query('select * from tp_user where id>5');     //如果成功返回數(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)建對應控制器函數(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>

關于TP的項目設置


  • 通過修改生成目錄下的config文件來達到項目修改的目的
設置 參數(shù) 例子 作用
URL_PATHINFO_DEPR 任意合法符號 / 修改URL分隔符
TMPL_L_DELIM 任意符號 <{ 修改左邊界符
TMPL_R_DELIM 任意符號 }> 修改右邊界符
DB_TYPE 所要關聯(lián)數(shù)據(jù)庫的類型 mysql 設置數(shù)據(jù)庫關聯(lián)的類型
DB_HOST 主機 localhost 設置主機
DB_NAME 數(shù)據(jù)庫名 thinkphp 設置數(shù)據(jù)庫
DB_USER 用戶名 數(shù)據(jù)庫的用戶名 設置用戶名
DB_PWD 密碼 數(shù)據(jù)庫的密碼 設置密碼
DB_PORT 端口 3306 設置端口
DB_PREFIX 表前綴 tp_ 設置表前綴
SHOW_PAGE_TRACE true false 開啟頁面跟蹤
DB_DSN 數(shù)據(jù)庫的DSN參數(shù) mysql://root:@localhost:3306/thinkphp 通過DSN方式訪問數(shù)據(jù)庫
TMPL_TEMPLATE_SUFFIX 想要設置的后綴名 .html / .php 控制器讀取模板的后綴名將會改變
  • 例子
<?php
return array(
    //'配置項'=>'配置值'
    'TMPL_L_DELIM'=>'<{',   //修改左定界符
    'TMPL_R_DELIM'=>'}>',    //修改右定界符
    'DB_TYPE' =>'mysql',    //設置數(shù)據(jù)庫類型
    'DB_HOST'=>'localhost',     //設置主機
    'DB_NAME'=>'thinkphp',      //設置數(shù)據(jù)庫
    'DB_USER'=>'root',      //設置用戶
    'DB_PWD'=>'',       //設置密碼
    'DB_PORT'=>'3306',      //設置端口
    'DB_PREFIX'=>'tp_',      //設置表前綴
    'SHOW_PAGE_TRACE'=>TRUE     //頁面跟蹤
);
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 這里記錄的是本人學習的thinkPHP筆記官方開發(fā)手冊http://document.thinkphp.cn/ma...
    遠方的楓葉閱讀 1,580評論 0 15
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,265評論 4 61
  • Broadcast 是 Spark 常用的特性,本文不打算介紹什么是 Broadcast 及如何使用它,只希望能以...
    牛肉圓粉不加蔥閱讀 2,127評論 0 4
  • 1、感恩這國慶七天過的如此這般自在,陪陪家人,看看書,旅行,看電影,看了一部好劇。 2、感恩這個時代出產(chǎn)了這么好的...
    感恩女神詩淘閱讀 122評論 0 0
  • 時瓦日 三 紅裙子 “船槳兒搖搖,過了十八座橋; 魚寶寶睡覺,輕輕留下微光照; 笑啊笑啊,鏡子上有面包, 跳啊跳啊...
    好枼閱讀 265評論 0 0

友情鏈接更多精彩內(nèi)容