按照MVC模式開發的一個框架,也叫TP框架。php
優勢:css
一、zend frameworkhtml
zend公司開發的官方的框架,功能很強大,重量級框架。數據庫
二、Yiiwindows
國人本身開發的重量級框架,該框架的特色就是代碼的可重用性很是好。數組
三、CI(code Igniter)瀏覽器
輕量級的框架,緩存
四、cakePHP架構
外國的PHP開發框架框架
五、ThinkPHP
這是國人開發的,免費、開源的,簡單的、面向對象的,輕量級的PHP框架。
在ThinkPHP\Library\Think文件夾中,幾個重要的文件
一、App.class.php 框架核心類文件
二、Think.class.php 每次請求都要執行的類
三、Controller.class.php 控制器的父類
四、Model.class.php 模型的父類
五、View.class.php 試圖的父類
在站點下新建index.php,代碼以下:
運行後出現歡迎界面,在說明系統自動生成了ThinkPHP的項目目錄,並寫入了初始的控制器和方法。
自動生成的目錄以下:
一、帕斯卡命名法:首字母大寫 UserName MyNameIsLiping
二、駱駝命名法:userName _user_name
三、匈牙利命名法:前綴(類別)+名字 radSex txtUsername iIength oStu
一、普通模式
二、pathinfo模式
http://網址/入口文件(index.php)/分組(平臺)/控制器/方法
好比:http://localhost/index.php/home/index/index
三、rewrite()重寫模式
四、兼容模式
參數s=/分組/控制器/方法。
ThinkPHP中,默認使用pathinfo模式。
全部的模板都要放在view文件夾下。
規則:一個控制器對應一個文件夾,一個方法對應一個文件
TP模板的調用
一、在Application文件夾下新建一個Admin文件夾,在Admin文件夾中新建Controller和View文件夾。
二、在Admin\Controller控制器中新建一個LoginController.class.php頁面,代碼以下:
三、在login.html中更改css、js、img的路徑
表單提交地址更改
四、在Admin\Controller文件夾中新建ManagerClass.php文件
五、對應的index頁面中更改以下:
六、注意更改index、head、left、right頁面中的路徑
1.tp框架有兩種使用模式:開發模式(調試模式),一種是生產模式(運行模式)
define('APP_DEBUG', true); //調試模式
define('APP_DEBUG', FALSE); //運行模式
運行模式會把不少核心文件代碼緩存成" common~runtime.php"文件,把原來每次須要加載許多文件的請求如今只要請求一個緩存文件,節省了不少文件的打開,關閉的開銷。
在配置文件中,添加以下配置
配置完成後,在瀏覽器的右下角會顯示以下標記。
若是想看源碼的話,在behavior文件夾下的ShowPageTraceBehavior.class.php
把ThinkPHP的引擎改爲Smarty
smarty引擎的存放位置
smarty驅動
若是想更改Smarty的配置(通常不要改)
系統在找不到請求的方法的時候,會定位到__empty()方法處理,利用這個機制,咱們能夠對用戶請求的不存在的全部操做進行統一處理。
當系統請求找不到控制器,會定位到空控制器上EmptyController。
一、直接實例化
二、A()
A()用來實例化其餘控制器的。
三、R()
R()和A()基本同樣,惟一不一樣的是R()函數在實例化控制器的時候把操做方法一塊兒傳遞過去,省略了方法的調用
慣例配置:ThinkPHP/conf/convention.php
應用配置:Application/Common/conf/config.php
調試配置:Application/Common/conf/debug.php
模塊配置:Application/Home/conf/config.php
加載順序
慣例配置->應用配置->調試配置->模塊配置
優先級:
模塊配置>調試配置>應用配置>慣例配置
C('配置的名稱') 用來獲取配置信息。
<if condition='表達式'>
<elseif condition='表達式' />
<else/>
</if>
表達式中運算符
PHP運算符 |
對應的TP中的運算符 |
英文全稱 |
< |
lt |
Less than |
> |
gt |
Greater than |
== |
eq |
equal |
>= |
egt |
Equal or greater than |
<= |
elt |
|
在配置文件中,作如上的配置,便可鏈接數據庫
把"Home/Model"文件夾剪切到Application文件夾下,讓Home和Admin共同使用。
第一種實例化模型的方法
第二種實例化模型的方法
第三種實例化模型的方法
在tp3.2之後,M()和D()是同樣的,在3.2以前版本中
M() 相似因而 new Model();
D('goods') 相似於 new GoodsModel():
提示:咱們能夠看到goods表的信息,在GoodsModel中沒有寫代碼,全部的業務邏輯都是Model類來實現的。
增長:M('表名')->add($data);
刪除:M('表名')->delete($id);
更新:M('表名')->save($data);
查詢:M('表名')->select();
一、GoodsController中的代碼以下:
$goods=M('goods')->find(); //獲取一條記錄
var_dump($goods);
一、查詢主鍵爲2的記錄
$list=M('goods')->select(2);
二、查詢編號是2,3,4,5,6的記錄
$list=M('goods')->select("2,3,4,5,6");
三、where條件
$list=M('goods')->where("goods_name like '%諾基亞%'")->select();
$list=M('goods')->where("goods_name like '%諾基亞%' and goods_price>=1000")->select();
四、limit
$list=M('goods')->limit(5)->select();
$list=M('goods')->limit(2,5)->select();
五、where和limit
$list=M('goods')->where('goods_price>1000')->limit(3)->select();
六、排序
$list=M('goods')->order('goods_price desc')->select();
七、查詢指定字段
$list=M('goods')->field('goods_name,goods_price')->select();
八、having
$list=M('goods')->having('goods_price>2000')->select();
//分組
$list=M('goods')->group('goods_brand_id')->field('goods_brand_id ,max(goods_price) m')->having('m>2000')->select();
var_dump($list);
having和where的區別
區別一:
where後面跟的字段必須在數據表中有
having後面跟的字段必須在數據集中有
區別二:
select * from 表 where 條件 group by 分組 having 條件
getby+字段名
一、經過關聯數組的方法添加
二、經過AR(active record)方式來添加
一、經過關聯數組的方法
二、經過AR(active record)方式