學(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)目的五種方式
- PATHINFO模式
- 例:
http://域名/項(xiàng)目名/入口文件/模塊名/方法名/鍵1/值1/鍵2/值2
- 普通模式
- 例:
http://域名/項(xiàng)目名/入口文件?m=模塊名&a=方法名&鍵1=值1&鍵2=值2
- REWRITE模式
- 例:
http://域名/項(xiàng)目名/模塊名/方法名/鍵1/值1/鍵2/值2
- 兼容模式
- 例:
http://域名/項(xiàng)目名/入口文件?s=模塊名/方法名/鍵1/值1/鍵2/值2
- 傳參模式
- 例:
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è)面跟蹤
);