title: thinkPHP框架使用方法
date: 2018-01-05 20:30:44
tags:
1. thinkPHP思想
thinkPHP基于MVC思想咖熟,MVC是一種設計模式,他強制的使用應用程序的輸入徒仓、處理和輸出分開。MVC應用程序被分為三個核心部分:模型(model)誊垢、視圖(view)掉弛、控制器(control),他們各自處理自己的任務喂走。
例如:
<div align=center>
[圖片上傳失敗...(image-7538ba-1515156835754)]
</div>
2. 單入口創(chuàng)建項目
<?php
//單入口 || 主入口 :路由分配
//開啟調試模式:部分做緩存
define("APP_DEBUG",true);
//定義項目名稱
define("APP_NAME","Index");
//定義項目路徑
define("APP_PATH","Index/");
//引入核心文件
require "ThinkPHP/ThinkPHP.php";
?>
執(zhí)行上述代碼時殃饿,系統(tǒng)自動創(chuàng)建一個文件夾,里面包含的內容與系統(tǒng)封裝的thinkPHP一樣芋肠,而這里面的文件就是我們要寫的代碼乎芳。
[圖片上傳失敗...(image-d688cc-1515156835754)]
- thinkPHP官方地址:http://www.thinkphp.cn/
3. 庫目錄結構(thinkphp)
? Lib/Think: 為Thinkphp框架核心目錄
? Lib/ORG : 為Thinkphp框架自帶擴展目錄
4. 項目目錄結構(home)
- Lib:放置控制層類和模型層類
- Action:相當于controler
- Model: model層 - Tpl:放置著模板(皮膚)文件,相當于view
- Conf:系統(tǒng)項目配置目錄
- Common:項目中公共用到的資源帖池,如js,css奈惑,圖片等
- Runtime:系統(tǒng)運行時臨時目錄(若運行中產(chǎn)生緩存現(xiàn)象,可以將該目錄中內容進行刪除)
- Cache:模板頁面緩存
- Data:數(shù)據(jù)字段緩存
- Logs:系統(tǒng)運行日志
- Temp:臨時文件緩存
- app:系統(tǒng)配置文件編譯緩存
5. thinkPHP的訪問規(guī)則
- http:localhost/thinkphp/index.php/index/index
- Thinkphp規(guī)定:所有的主入口文件默認訪問index控制器睡汹,且所有的控制器默認是去找index方法(動作)
- 控制器類名必須是于文件名相同(除去.class.php)肴甸,首字母必須大寫,后面加上Action囚巴,且要繼承Action
// 本類由系統(tǒng)自動生成原在,僅供測試用途
class IndexAction extends Action {
public function index(){
$name = "DR";
//將變量輸出到模板
//1、(不常用)
$this->name = "DR";
//2彤叉、(常用)
$this->assign("height","183cm");
$this->assign("showTime",$showTime);
//加載index模板 默認加載
// $this->display();
//加載到指定的模板 不加后綴
$this->display("test");
}
- 方法名通常是public(默認)庶柿,否則thinkphp無法正常解析
6. 控制器與模板之間的關系
-
- Thinkphp中模板和控制器之間的訪問原則
- 加載模板(跨模板): $this->display(Action:模板名稱)
- 加載模板(本模板):$this->display([模板名稱])
//加載到指定的模板 不加后綴
$this->display("test");
-
- 控制器與模板之間的變量傳遞
- $this->assign('變量名','變量值')
- 在模板中采用{$變量名}的形式輸出變量值
<ul>
<!-- offset="1"從什么位置輸出 length="2"輸出幾條 empty="暫時沒有數(shù)據(jù)" 當數(shù)據(jù)沒有的時候顯示 -->
<volist name="arr" id="val" offset="1" length="1" empty="暫時沒有數(shù)據(jù)" >
<li>姓名是:{$val.name},年齡是:{$val["age"]},身高是:{$val.height}</li>
</volist>
<foreach name="arr" item="val">
<p>姓名是:{$val.name},年齡是:{$val.age}秽浇,身高是:{$val["name"]}</p>
</foreach>
<!--
gt : 大于
egt: 大于等于
lt: 小于
elt: 小于等于
eq: 等于
neq: 不等于
heq: ===
nheq: !==
-->
<if condition="$num gt 5">
num的值大于5
<elseif condition="$num lt 5" />
num的值小于5
<else />
num的值等于5
</if>
</ul>
<!--對str進行加密-->
{$str|md5};
<hr />
當前時間:{$nowTime|date="Y-m-d H:i:s",###}
<hr />
處理之后的時間:{$showTime}
<for start="1" end="10">
{$i} <br />
</for>
<switch name="randNum">
<case value="1" break="1">{$randNum}的值等于1</case>
<case value="2" break="1">{$randNum}的值等于2</case>
<default />{$randNum}的值不是1浮庐,2
</switch>
<hr />
<eq name="randNum" value="2">{$randNum}的值等于2</eq>
<hr />
{$randNum > 2 ? "大于2" : "小于2"}
<hr />
<!--in || notin-->
<in name="randNum" value="2,3,4,5">{$randNum}在值里面</in>
<hr />
<!--between-->
<between name="randNum" value="2,5">
{$randNum}在值2~5里面
<else />
{$randNum}的值等于1
</between>
<!--引入外部文件 后面不加后綴-->
<include file="commonView" />
<!--引入外部文件的時候,如果是外部文件夾里面的文件
會生成類柬焕,要先引入里面的類
-->
<include file="Public:header" />
<!--也可以用相對路徑-->
<include file="../Public/header" />
-
- 控制器調用模板的方式
- URL: 代表當前操作所在木塊地址(同控制方法跳轉)
- APP:代表當前項目的入口文件的地址(跨控制器方法跳轉)
- ROOT:代表網(wǎng)站根目錄地址(跨前审残、后臺控制器方法跳轉,范圍最廣)
7. 配置文件
- 屬性配置
- 配置文件在config.php文件里
配置的屬性通過大C方法來實例化
- 配置文件在config.php文件里
<?php
class ProductAction extends Action{
function getUrlModel(){
//實例化配置項 C()方法調用Conf里面的方法
// echo C("URL_MODEL");
//實例化自定義
// echo C("name");
echo C("height");
}
}
?>
2. 如果有多個配置文件的話击喂,可以通過“LOAD_EXT_CONFIG”=>"user"來進行配置
"LOAD_EXT_CONFIG" => "user", 在config.php里面配置
<?php
return array(
//'配置項'=>'配置值'
// "URL_MODEL" => 0
"name" => "D2222",
"age" => "19",
//加入其他配置項文件
"LOAD_EXT_CONFIG" => "user",
);
?>
8. 連接數(shù)據(jù)庫
//數(shù)據(jù)庫配置信息
'DB_TYPE' => 'mysql', // 數(shù)據(jù)庫類型
'DB_HOST' => 'localhost', // 服務器地址
'DB_NAME' => 'thinkphp', // 數(shù)據(jù)庫名
'DB_USER' => 'root', // 用戶名
'DB_PWD' => '', // 密碼
'DB_PORT' => 3306, // 端口
'DB_PREFIX' => '', // 數(shù)據(jù)庫表前綴