关于ThinkPHP的一些编程技巧
在TP学习过程中难免会遇到一些大大小小的问题,把这些问题积累下来就可以在以后遇到时能很快速的解决,提高编程效率。
1、让Runtime下的文件格式化:入口文件处:define(‘STRIP_RUNTIME_SPACE’,false);
2、开发时不进行缓存:入口文件处:define(‘NO_CACHE_RUNTIME’,true);
3、ThinkPHP支持四种访问模式:a:普通模式 b:pathinfo模式 c:rewrite模式 d:兼容模式 在配置文件中用URL_MODEL=0(1、2、3)来表示。
4、改变分隔线/:URL_PATHINFO_DEPR。默认为:/
5、跨模块<控制器>调用模板方法:模块<控制器名:模板名(不加后缀)>,如$this->display(‘Index:tt’);
6、跨皮肤调用模板方法:假如Tpl下有skin皮肤,该皮肤下有User文件夹,该文件夹下有sg.html,那么$this->display(‘skin@User:sg’);就跨皮肤调用了。
7、全路径输出:在工程目录<非项目目录>下,建一个Public文件夹,这就是公共文件,可以将js文件放在这里供前后台共用。现在假设Public文件夹下有一个ss.html文件,那么
$this->display(‘./Public/ss.html’);就输出公共文件中的ss.html模板。
8、display的参数:依次为:模板名,编码格式,mimie。如:$this->display(‘./Public/ss.html’,'utf-8′,’text/xml’);
9、系统常量:
__ROOT__ //代表网站的根目录地址
__APP__ //代表项目的入口文件地址
__URL__ //代表当前操作地址
__ACTION__ //代表当前操作地址
__SELF__ //代表当前的URL地址
__CURRENT__ //代表当前模块的模板目录
__PUBLIC__ //代表整个项目的公用目录
__TMPL__ //代表整个项目的模板目录,如Tpl/default/
ACTION_NAME //当前操作名称
APP_PATH //代表当前项目目录
APP_NAME //代表当前项目名称
APP_TMPL_PATH //代表当前项目的模板目录
APP_PUBLIC_PATH //代表项目公共文件目录
CACHE_PATH //项目模板缓存目录
10、配置文件中一些有用的参数:
‘SHOW_RUN_TIME’=>true,//运行时间显示
‘SHOW_ADV_TIME’=>true,//显示详细的运行时间
‘SHOW_DB_TIMES’=>true,//显示数据库的操作次数
‘SHOW_CACHE_TIMES’=>true,//显示缓存操作次数
‘SHOW_USE_MEM’=>true,//显示内存开销
11、halt();//中断程序执行。
12、dump是ThinkPHP里面预定义好的一个函数,具有显示更清晰的作用。
13、读取配置文件其中信息:C,如:$a=C(‘DB_HOST’);这种情况可用于在后台中向管理员显示服务器IP,数据库信息等。
14、自定义Model类并在实例化模型<模型就是数据库操作类>时使用,如:
a、在工程目录下的home<前台文件夹>下的Lib下的Model下建立一个IndexModel.class.php,然后里面写一个方法play,此方法循环输出1至10。
b、在Action中的方法里:
$index=M(‘index’,'IndexModel’); //这里可以加上自定义的模型类一起实例化
$index->play();
那么会输出1至10。
15、实例化模型可以用D也可以用M,M是快速实例化,且可带参,如M(‘User’,'play’);//play是一个对应的模型类。也可以$user=new UserModel();
16、D方法可以自动检测模型类,不存在时它会抛出一个异常。同时对于已实例化过的模型,不会去重复实例化。默认的D方法只能支持调用当前项目(应用)下面的模型。
17、ThinkPHP的分组功能:如果现在想在前台实合例化后台模型,那么:
$admin=D(‘admin.user’);
dump($admin->find());
将输出后台模型数据,这就是分组功能。
18、CommonAction中的_initialize方法让每一个继承它的类的每个方法都要经过_initialize。think_access表要加个pid(int11)字段。四张表是必须的,但是还需要一张user表,里面字段自定。
19、解决ThinkPHP中使用Smarty然后include方法无效的办法:不是不支持,但是路径没有那么智能,比如Tpl的default下的Task模块下有一test.html文件,那么,请用<{include file=’default/Task/test.html’}>以下为引用的话:
include所包含的文件由file属性来指定,路径相对于template_dir,也就是所如果你在使用smarty的时候设置模板路径template_dir假设为Tpl,那么file的文件就应该相对于Tpl文件来取,就你的例子
{include file=”Public/header.html”}的话,那么header.html要放在Tpl下的Public文件夹下。
其实,在Smarty类中把include函数改一下让它输出路径,那么这问题将很好查找。
20、关联模型:尝试了很多次,它一直提示找不到relation方法,就在准备放弃那一秒,奇迹真的出现了:它可以了,配置还是那个配置,真的未改动,那个配置也没什么怀念的,还是记录一下吧:
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、关闭ap.php缓存:配置文件中: APP_DEBUG=>true,
22、ThinkPHP中判断为空的方法:<present name=”name”>name已经赋值<else /> name还没有赋值</present>
23、ThinkPHP原生模板中if语句中session判断的问题:
正确使用如下:
<if condition=”$_SESSION['level'] egt 2″>
<a href=”>收藏此人才</a>
</if>
正解:
由于 if 标签的 condition 属性里面基本上使用的是 php 语法,尽可能使用判断标签和 Switch 标签会更加简洁,原则上来说,能够用 switch 和比较标签解决的尽量不用 if 标签完成。因为 switch 和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面, IF 标签仍然无法满足要求的话,可以使用原生 php 代码或者 PHP 标签来直接书写代码
<eq name= ”Think.session.disEdit” value= ”1″>。。。。。</eq> 这个没试,但已明白
<if condition=”$_SESSION['disEdit'] eq 1″> 这个是可以的
24、分组模式配置:
//分组模式配置
‘APP_GROUP_LIST’=>’Index,Job,Member,Shop’,
‘DEFAULT_GROUP’=>’Index’,
25、Thinkphp开发时关闭缓存的方法:
因在开发中需要经常修改,从而要经常删除缓存,才能看到效果。
所以为了开发的方便,可以把缓存给去除。
1.找到\ThinkPHP\Common\convention.php和\ThinkPHP\Common\debug.php
2.打开这两个文件找到你想要的设置即可。
debug.php中
‘TMPL_CACHE_ON’=>false, // 默认开启模板缓存
convention.php中‘
TMPL_CACHE_ON’ => false, // 默认开启模板编译缓存 false 的话每次都重新编译模 板
‘ACTION_CACHE_ON’ => false, // 默认关闭Action 缓存
‘HTML_CACHE_ON’ => false, // 默认关闭静态缓存
26、中文字符长度截取:{$vo['title']|mb_substr=###,0,16,’UTF-8′},这是支持中文的,很好用。
27、ThinkPHP2.1中,如果想开启debug后显示页面运行时间,那么要在页面中加入{__RUNTIME__}才可以的。
28、HTML压缩:
TMPL_STRIP_SPACE
这个不是压缩 只是去空白和注释
29、模板后缀设置:‘TMPL_TEMPLATE_SUFFIX’ => ’.tpl’
30、欢迎继续添加…..
作者:夏, 潇
本文地址:http://studio.ewe.com.cn/?p=921
转载请注明:EWE工作室 » 关于ThinkPHP的一些编程技巧
转载于:https://www.cnblogs.com/meetrice/p/3547803.html
关于ThinkPHP的一些编程技巧相关推荐
- java数据和窗口怎么结合_卖jsp编程技巧的那个垃圾的所有实例的答案全部
卖jsp编程技巧的那个垃圾的所有实例的答案全部 发布时间:2016-09-14 来源: 点击: 次 1. 如何让选中的一行记录高亮显示? http://topic.csdn.net/t/2005010 ...
- python3实用编程技巧_适合Python初学者的一些编程技巧
这篇文章主要介绍了给Python初学者的一些编程技巧,皆是基于基础的一些编程习惯建议,需要的朋友可以参考下 交换变量 x = 6 y = 5 x, y = y, x print x >>& ...
- 偏执却管用的 10 条 Java 编程技巧
经过一段时间的编码(咦,我已经经历了将近20年的编程生涯,快乐的日子总是过得很快),我们开始感谢那些好习惯.因为,你知道- "任何可能出错的事情,最后都会出错." 这就是人们为什么 ...
- 分享 10 个超实用的 Python 编程技巧
作者 | 欣一 来源 | Python爱好者集中营 今天小编来给大家分享几个Python的编程技巧,帮助你迅速完成地从小白到Python大神的蜕变. 字典翻转 首先我们来看字典的翻转,假设我们有下面类 ...
- 你不知道的18个Python高效编程技巧
来源 | Python编程时光 初识Python语言,觉得python满足了我上学时候对编程语言的所有要求.python语言的高效编程技巧让我们这些大学曾经苦逼学了四年c或者c++的人,兴奋的不行不行 ...
- 如果你是C开发人员请看这三个显式编程技巧
嵌入式系统开发人员应尽可能明确,以避免 ASSUME 综合症并在其系统中产生意外行为.在今天的文章中,让我们来看看嵌入式开发人员可以通过更明确的方式清理代码的几个领域. 嵌入式系统开发人员应尽可能明确 ...
- Java 编程技巧之数据结构
Photo @markusspiske 文 | 常意 导读 唐宋八大家之一欧阳修在<卖油翁>中写道: 翁取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔入,而钱不湿.因曰:"我 ...
- python多线程挂了_python多线程输入的问题 python高效编程技巧13(如何在线程之间实现...
python3 创建线程时不用args传参,执行线程时为什如果创建线程时在target里就传入了参数,为什么在启动线程时,线程不是在Python多线程下,每个线程的执行方式: 有什么了不起,大不了继续 ...
- 成为优秀程序员需要具备的15种编程技巧
来源 | https://www.linuxmi.com/chengxuyuan-15-jiqiao.htm 编程是一个告诉计算机如何工作的术语.通过编程,我们可以轻松操作任何技术.就像所有人在特定地 ...
最新文章
- Java BIO、NIO、AIO
- Git的学习与使用(一)——Git 与 SVN 区别
- python在线读-文档编辑工具Markdown
- python能够做什么软件-python爬虫软件有哪些做的比较好的?
- 用Maven构建Mahout项目
- 关于C#资源文件操作的总结
- PHP 底层的运行机制与原理 --转
- 【Blog.Core开源】完成升级.NET 6.0
- 基于keepalived实现haproxy高可用的双主模型配置
- 不用更改注册表就可以更改桌面所在的位置
- cgi进程设置多少 宝塔_Python Multiprocessing 多进程、进程守护、锁、队列使用介绍...
- 面向对象编程 — 为什么要引入抽象概念?
- 如何注册自己的OpenAI/ChatGPT账号?
- 计算机光驱无法启用,win10系统没法启动光驱怎么解决
- 联想国产自主计算机,实现零的突破,第一款纯国产电脑诞生,网友:此刻联想怎么想?...
- 虚幻4 游戏引擎 C++编程 官网例程解析
- 【拓展】谈谈字符编码:Unicode编码与emoji表情编码
- UILabel根据字数计算高度,宽度,行数
- 1024程序员节主题征文 | 2022年1024程序员节只剩一天
- vue实现 文件重命名
热门文章
- 用python的turtle画炫酷的图-使用Python的turtle画炫酷图形
- python界面设置-Python进入后台界面(admin)设定
- python自动化办公 书籍-python自动化办公知识点整理汇总
- python基础语法有哪些-python有哪些语法元素
- python和linux哪个难学-“慢”下来的 Python 要怎么竞争?
- c语言 python-C语言和python的区别
- python培训比较好的机构-西安比较好的python培训机构推荐
- python官网下载步骤2019-2019年python入门到精通(19天全)
- python要在哪里写代码-初识python【今天开始写代码】第一课
- python代码大全下载-大神整理的python资源大全