TP开发小技巧
TP开发小技巧
原文地址
http://wp.chenyuanzhao.com/wp/2016/07/23/tp%E5%BC%80%E5%8F%91%E5%B0%8F%E6%8A%80%E5%B7%A7/
http://wp.chenyuanzhao.com/wp/2016/07/23/tp%E5%BC%80%E5%8F%91%E5%B0%8F%E6%8A%80%E5%B7%A7/
一、前端
1、开发时间段禁止js,和css缓存,使用模板引擎在固定后缀加版本号或随机数
/* 模板相关配置 */
'TMPL_PARSE_STRING' => array(
'__PUBLIC__' => __ROOT__ . '/Public',
'.css"' => '.css?v='.time().'"',
'.js"' => '.js?v='.time().'"',
),
2、上传图片,最好使用base64,后台容易接收和保存
3、页面模板跟后台输出方法名一致,容易记忆不会歧义
4、上传表单时,键值名跟数据表一致,容易记忆不会歧义,安全问题不在字段名称上,别名不会更安全
二、后端
1、index.php设置
1
define("RUNTIME_PATH", './Runtime/');
2、配置一个上传目录 ,方便迁移
‘Uploads’=>’./Public/Uploads’,
3、上传的图片,本地保存不需要后缀
4、控制器最后不要写太多逻辑(少代码可以),逻辑写到model里面
5、不需要对多种url模式提供支持,现代搜索引擎没有那么低能,url已经没有seo作用
6、使用行为做权限控制,比继承控制器好用
7、可以对框架直接修改,但只能辅助性修改,新增删除都不会对业务逻辑影响
8、调试,修改tp的\ThinkPHP\Library\Think\controllerclass.php
protected function display($templateFile='',$charset='',$contentType='',$content='',$prefix='') {
trace($this->view);
$this->view->display($templateFile,$charset,$contentType,$content,$prefix);
}
配置文件 添加
1
'SHOW_PAGE_TRACE' =>true,
可以trace直接看到控制器赋值给模板的参数
9、session 不要放太多信息,除了user_id外,其他信息只能作为缓存类信息,不能直接获取
(保存在session不会更方便,如果保存很多信息,会造成混乱)
10、不要太多全局方法,最好写成对象,除了每个页面都要用到的,可以直接写成全局方法
11、修改tp的Build.class.php类,修改继承类为一个总控制器,方便显示404页面
12、A()、R()、D()是快捷实例对象,但他们会对新手误导,以为只能用他们实例化,对于静态方法,他们就没用了
勇敢用命名空间实例自己的类吧
三、数据库设计
1、禁忌过度的设计,例如总想分表,大数据的。
如果是log类型的分表的好的。
但是,对于有关系的数据表,一旦分表,意味着,你的代码量,复杂度,对成倍增加,拖慢项目速度。
而且,哪有这么多大数据,大流量,不要一开口就是淘宝天猫,人家淘宝刚开始开发时候有吗?
用户都是慢慢增长的,网站也不可能完成后都不维护。
随着用户增长,到了大流量时候,完全有时间金钱,升级、分流。
在不修改代码下,也可以升级硬件,对数据库分区分库,还可以变成meger表。
N多工具可以提升速度
TP开发小技巧的更多相关文章
- Windows统一平台: 开发小技巧
Windows统一平台: 开发小技巧 技巧一: 在手机端拓展你应用的显示区域.(WP8.1中也适用) 对于Windows Phone系统的手机, 手机屏幕最上方为系统状态栏(System Tray), ...
- flex开发小技巧集锦
关于flex开发网上有非常多的相关信息介绍,因此我们要想学习关于flex开发的知识信息技能是一件非常简单和方便的事情.而针对于flex开发小编要告诉大家的是一些flex开发小技巧.利用这些小技巧能够有 ...
- 移动Web开发小技巧
移动Web开发小技巧 添加到主屏后的标题(IOS) name="apple-mobile-web-app-title" content="标题"> 启用 ...
- BizTalk开发小技巧
BizTalk开发小技巧 随笔分类 - Biztalk Biztalk 使用BizTalk实现RosettaNet B2B So Easy 摘要: 使用BizTalk实现RosettaNet B2B ...
- Java开发小技巧(三):Maven多工程依赖项目
前言 本篇文章基于Java开发小技巧(二):自定义Maven依赖中创建的父工程project-monitor实现,运用我们自定义的依赖包进行多工程依赖项目的开发. 下面以多可执行Jar包项目的开发为例 ...
- iOS开发小技巧 - UILabel添加中划线
iOS开发小技巧 遇到的问题: 给Label添加中划线,然后并没有效果 NSString *str = [NSString stringWithFormat:@"合计金额 ¥%.2f&quo ...
- PHP开发小技巧②—实现二维数组根据key进行排序
在PHP中内置了很多对数组进行处理的函数,有很多时候我们直接使用其内置函数就能达到我们的需求,得到我们所想要的结果:但是,有的时候我们却不能通过使用内置函数实现我们的要求,这就需要我们自己去编写算法来 ...
- PHP开发小技巧③—实现多维数组转化为一维数组
在平常的项目开发中我们多会用到让多维数组转化为一维数组的情况,但是很多Programmer不会将其进行转化,也有些没有想到很好的算法然后经过乱起八糟的运算方式将其勉强转化好,但是所写的程序代码冗余非常 ...
- PHP开发小技巧①①—php实现手机号码显示部分
从个人信息保护性的角度来讲,我们在开发过程中总会想办法去保护用户的一些个人信息.就如本篇博文所讲,我们有时会将用户的手机号码只显示出部分,这是很多网站都有做的功能.这个功能实现起来也是特别的简单,只需 ...
随机推荐
- Codeforces 716B Complete the Word【模拟】 (Codeforces Round #372 (Div. 2))
B. Complete the Word time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常,不存在从对象类型System.Windows.Forms.DateTimePicker到已知的托管提供程序本机类型的映射。
一:C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常 其实,这个问题与C#的垃圾回收有关.垃圾回收器管 理所有的托管对象,所有需要托管数据的.NET语言(包括 C#)都受运行库的 垃圾回收器 ...
- poj1023
题目大意:有趣的数字系统 在一个k位的2的补码,,位的索引是从0到k-1位的,值是-2^(k-1),其他位置的i是2^i( (0 ≤ i < k-1) ),例如,3位的数字101是-2^2 + ...
- Java环境变量的配置及意义
配置环境:Windows XP 首先是配置参数,这个网站上很多.很多网站上说要配置三个参数,即Path,classpath,JAVA_HOME三个. 简要的介绍一下这三个环境变量. Path使得系 ...
- [置顶] VC++界面编程之--使用分层窗口实现界面皮肤
使用分层界面来实现界面皮肤的好处是:可以保证图片边缘处理不失真,且能用于异形窗口上,如一些不规则的窗口,你很难用SetWindowRgn来达到理想效果. 在很多情况下,界面的漂亮与否,取决于PS的制作 ...
- 356. Line Reflection
首先找到X方向的中点,如果中点是一个点,那么分别从这个点开始往左右找就行:如果是一个区间,比如1 2之间,那么首先总点数得是偶数,然后以1和2往左右两边找就行.. 找的时候,有3种情况: 同时没找到, ...
- Java常见面试题总结
一.Java基础 1.String类为什么是final的. 2.HashMap的源码,实现原理,底层结构. 3.说说你知道的几个Java集合类:list.set.queue.map实现类咯... 4. ...
- pandas对象保存到mysql出错提示“BLOB/TEXT column used in key specification without a key length”解决办法
问题 将DataFrame数据保存到mysql中时,出现错误提示: BLOB/TEXT column used in key specification without a key length 原因 ...
- ie8下$(document).on('mouseover mouseout','ul li',function(){})的bug
$(document).on('mouseover mouseout','ul li',function(){ if (event.type == 'mouseover') { c ...
- Ubuntu server下安装JDK和Tomcat7
服务器是Ubuntu server 12.04 LTS 64bit 所有操作假设已经有root权限,若没有需要添加sudo. 一. 安装JDK 1.去Oracle官网下载jdk-6u45-linux- ...