1、讓Runtime下的文件格式化:入口文件處:define('STRIP_RUNTIME_SPACE',false);2、開發(fā)時(shí)不進(jìn)行緩存:入口文件處:define('NO_CACHE_RUNTIME',true);
3、ThinkPHP支持四種訪問(wèn)模式:a:普通模式 b:pathinfo模式 c:rewrite模式 d:兼容模式 在配置文件中用URL_MODEL=0(1、2、3)來(lái)表示。
4、改變分隔線/:URL_PATHINFO_DEPR。默認(rèn)為:/
5、跨模塊<控制器>調(diào)用模板方法:模塊<控制器名:模板名(不加后綴)>,如$this->display('Index:tt');
6、跨皮膚調(diào)用模板方法:假如Tpl下有skin皮膚,該皮膚下有User文件夾,該文件夾下有sg.html,那么$this->display('skin@User:sg');就跨皮膚調(diào)用了。
7、全路徑輸出:在工程目錄<非項(xiàng)目目錄>下,建一個(gè)Public文件夾,這就是公共文件,可以將js文件放在這里供前后臺(tái)共用?,F(xiàn)在假設(shè)Public文件夾下有一個(gè)ss.html文件,那么
$this->display('./Public/ss.html');就輸出公共文件中的ss.html模板。
8、display的參數(shù):依次為:模板名,編碼格式,mimie。如:$this->display('./Public/ss.html','utf-8','text/xml');
9、系統(tǒng)常量:
__ROOT__ //代表網(wǎng)站的根目錄地址
__APP__ //代表項(xiàng)目的入口文件地址
__URL__ //代表當(dāng)前操作地址
__ACTION__ //代表當(dāng)前操作地址
__SELF__ //代表當(dāng)前的URL地址
__CURRENT__ //代表當(dāng)前模塊的模板目錄
__PUBLIC__ //代表整個(gè)項(xiàng)目的公用目錄
__TMPL__ //代表整個(gè)項(xiàng)目的模板目錄,如Tpl/default/
ACTION_NAME //當(dāng)前操作名稱
APP_PATH //代表當(dāng)前項(xiàng)目目錄
APP_NAME //代表當(dāng)前項(xiàng)目名稱
APP_TMPL_PATH //代表當(dāng)前項(xiàng)目的模板目錄
APP_PUBLIC_PATH //代表項(xiàng)目公共文件目錄
CACHE_PATH //項(xiàng)目模板緩存目錄
10、配置文件中一些有用的參數(shù):
'SHOW_RUN_TIME'=>true,//運(yùn)行時(shí)間顯示
'SHOW_ADV_TIME'=>true,//顯示詳細(xì)的運(yùn)行時(shí)間
'SHOW_DB_TIMES'=>true,//顯示數(shù)據(jù)庫(kù)的操作次數(shù)
'SHOW_CACHE_TIMES'=>true,//顯示緩存操作次數(shù)
'SHOW_USE_MEM'=>true,//顯示內(nèi)存開銷
11、halt();//中斷程序執(zhí)行。
12、dump是ThinkPHP里面預(yù)定義好的一個(gè)函數(shù),具有顯示更清晰的作用。
13、讀取配置文件其中信息:C,如:$a=C('DB_HOST');這種情況可用于在后臺(tái)中向管理員顯示服務(wù)器IP,數(shù)據(jù)庫(kù)信息等。
14、自定義Model類并在實(shí)例化模型<模型就是數(shù)據(jù)庫(kù)操作類>時(shí)使用,如:
a、在工程目錄下的home<前臺(tái)文件夾>下的Lib下的Model下建立一個(gè)IndexModel.class.php,然后里面寫一個(gè)方法play,此方法循環(huán)輸出1至10。
b、在Action中的方法里:
$index=M('index','IndexModel'); //這里可以加上自定義的模型類一起實(shí)例化
$index->play();
那么會(huì)輸出1至10。
15、實(shí)例化模型可以用D也可以用M,M是快速實(shí)例化,且可帶參,如M('User','play');//play是一個(gè)對(duì)應(yīng)的模型類。也可以$user=new UserModel();
16、D方法可以自動(dòng)檢測(cè)模型類,不存在時(shí)它會(huì)拋出一個(gè)異常。同時(shí)對(duì)于已實(shí)例化過(guò)的模型,不會(huì)去重復(fù)實(shí)例化。默認(rèn)的D方法只能支持調(diào)用當(dāng)前項(xiàng)目(應(yīng)用)下面的模型。
17、ThinkPHP的分組功能:如果現(xiàn)在想在前臺(tái)實(shí)合例化后臺(tái)模型,那么:
$admin=D('admin.user');
dump($admin->find());
將輸出后臺(tái)模型數(shù)據(jù),這就是分組功能。
18、CommonAction中的_initialize方法讓每一個(gè)繼承它的類的每個(gè)方法都要經(jīng)過(guò)_initialize。think_access表要加個(gè)pid(int11)字段。四張表是必須的,但是還需要一張user表,里面字段自定。
19、解決ThinkPHP中使用Smarty然后include方法無(wú)效的辦法:不是不支持,但是路徑?jīng)]有那么智能,比如Tpl的default下的Task模塊下有一test.html文件,那么,請(qǐng)用<{include file='default/Task/test.html'}>以下為引用的話:
include所包含的文件由file屬性來(lái)指定,路徑相對(duì)于template_dir,也就是所如果你在使用smarty的時(shí)候設(shè)置模板路徑template_dir假設(shè)為Tpl,那么file的文件就應(yīng)該相對(duì)于Tpl文件來(lái)取,就你的例子
{include file="Public/header.html"}的話,那么header.html要放在Tpl下的Public文件夾下。
其實(shí),在Smarty類中把include函數(shù)改一下讓它輸出路徑,那么這問(wèn)題將很好查找。
20、關(guān)聯(lián)模型:嘗試了很多次,它一直提示找不到relation方法,就在準(zhǔn)備放棄那一秒,奇跡真的出現(xiàn)了:它可以了,配置還是那個(gè)配置,真的未改動(dòng),那個(gè)配置也沒(méi)什么懷念的,還是記錄一下吧:
UserModel.class.php如下:
<?php
class UserModel extends RelationModel{
public $_link = array(
'phone'=>array(
'mapping_type'=>HAS_ONE,
'foreign_key'=>'uid',
),
);
}
?>
IndexAction.class.php如下:
public function index()
{
$user=D('user');
$users=$user->relation(true)->find(1);
dump($users);
}
21、關(guān)閉ap.php緩存:配置文件中: APP_DEBUG=>true,
22、ThinkPHP中判斷為空的方法:<present name="name">name已經(jīng)賦值<else /> name還沒(méi)有賦值</present>
23、ThinkPHP原生模板中if語(yǔ)句中session判斷的問(wèn)題:
正確使用如下:
<if condition="$_SESSION['level'] egt 2">
<a href=''>收藏此人才</a>
</if>
正解:
由于 if 標(biāo)簽的 condition 屬性里面基本上使用的是 php 語(yǔ)法,盡可能使用判斷標(biāo)簽和 Switch 標(biāo)簽會(huì)更加簡(jiǎn)潔,原則上來(lái)說(shuō),能夠用 switch 和比較標(biāo)簽解決的盡量不用 if 標(biāo)簽完成。因?yàn)?switch 和比較標(biāo)簽可以使用變量調(diào)節(jié)器和系統(tǒng)變量。如果某些特殊的要求下面, IF 標(biāo)簽仍然無(wú)法滿足要求的話,可以使用原生 php 代碼或者 PHP 標(biāo)簽來(lái)直接書寫代碼
<eq name= "Think.session.disEdit" value= "1">。。。。。</eq> 這個(gè)沒(méi)試,但已明白
<if condition="$_SESSION['disEdit'] eq 1"> 這個(gè)是可以的
24、分組模式配置:
//分組模式配置
'APP_GROUP_LIST'=>'Index,Job,Member,Shop',
'DEFAULT_GROUP'=>'Index',
25、_initialize這個(gè)函數(shù)不太好記,臥槽,記這里吧。
26、Thinkphp開發(fā)時(shí)關(guān)閉緩存的方法:
因在開發(fā)中需要經(jīng)常修改,從而要經(jīng)常刪除緩存,才能看到效果。
所以為了開發(fā)的方便,可以把緩存給去除。
1.找到\ThinkPHP\Common\convention.php和\ThinkPHP\Common\debug.php
2.打開這兩個(gè)文件找到你想要的設(shè)置即可。
debug.php中
'TMPL_CACHE_ON'=>false, // 默認(rèn)開啟模板緩存
convention.php中'
TMPL_CACHE_ON' => false, // 默認(rèn)開啟模板編譯緩存 false 的話每次都重新編譯模板
'ACTION_CACHE_ON' => false, // 默認(rèn)關(guān)閉Action 緩存
'HTML_CACHE_ON' => false, // 默認(rèn)關(guān)閉靜態(tài)緩存
27、中文字符長(zhǎng)度截?。簕$vo['title']|mb_substr=###,0,16,'UTF-8'},這是支持中文的,很好用。
28、ThinkPHP2.1中,如果想開啟debug后顯示頁(yè)面運(yùn)行時(shí)間,那么要在頁(yè)面中加入{__RUNTIME__}才可以的。
29、HTML壓縮:
TMPL_STRIP_SPACE
這個(gè)不是壓縮 只是去空白和注釋
30、模板后綴設(shè)置:'TMPL_TEMPLATE_SUFFIX' => '.tpl'