1,代码的高度复用
1,js的删除,弹出框都可以用嵌入的js,不用每个页面都写
2,控制器的初始化函数可以实现配置某些变量,比如admin模块的topic控制器的初始化函数可以 $this->obj = model('Topic');
3,验证器使用模块文件夹下validate文件夹创建的控制器类(模型与验证器对应),那么不用每次都创建
//验证器
$validate = validate('User');
//得到结果
$result = $validate->scene('registe')->check($data);
if(!$result){
$this->error($validate->getError()) ;
} 4,一些经常调用的api,统一写在api模块下,这样就算是移动端都能调用了
5,模型类里创建一下方法,譬如查询列表,删除某条数据... ,甚至可以继承base模型类,在base模型类里写某些方法。这样九避免了每次都在
控制器里面写方法
6,某些经常使用的方法,写在common里面
7,一些config设置可以extra文件夹下的email.php里,调用方式:config('email.example') 。或者写在模块文件夹下的config.php里,调用:config('example') 8,index控制器可以继承base控制器,公共方法status放在base控制器里,调用index/index/status会自动执行base控制器的status方法(这是php的继承原理), 然获在base的status方法里获取取当前控制器 request()->controller() (string(8) "Index"),
然后处理逻辑就好了
(模型也同理) 2,易读性的代码结构
1,根目录extend文件夹里面写第三方类库(发送邮件...),命名空间namespace mailer;之后在控制器直接调用这些类库就行
2,逻辑能写在控制器尽量不要写在模板 3,一些杂的知识点
1,助手函数:model('User') validate('User') //快捷获取模型,控制器对象
2,request()->domain() //当前域名
3,模型的关联查询效率不高
4,前端就是js
5,htmlentities($str,ENT_QUOTES,'UTF-8'); 可以把字符串转换成html实体
例如:<script>alert(1);</script> -》 &lt;script&gt;alert(1);&lt;/script&gt;
目的:防止xss攻击
参考:https://www.cnblogs.com/loveyouyou616/p/5444976.html
6,在base控制器公共类 调用$this,返回的是当前控制器的类名,比如在shupping控制器中访问base类然后调用$this,得到的是app\index\controller\Shopping,这是php基础知识,结合1-5,1-8理解
7,session可以用模块为作用域,免得各个模块的作用域混乱
8,通过控制器也能加载图片 img src="{url('index/index/index',['demo','123'])}"
9,tp的助手函数 input('get.id',0,'intval'); 只接收为整数的id
10,$_SERVER['HTTP_REFERER']获取来路
11,设计到数据库的插入,更新,应该try catch
12,tp打log的技巧
\think\Log::write('id:'.$id,'demo');
可以在runtime/log/2019/18.log文件中看见 [ demo ] xxxxxxxx
如果需要在其他文件中更容易查看,在config的log键下设置 'apart_level' => ['demo'],
心得:可以查出效率低的sql 13,tp框架测试一段代码的消耗时间和消耗内存(debug是助手函数)
debug('begin'); ---开始的地方
.
. ---一段代码
.
debug('end'); ----结束的地方
dump( debug('begin','end')); ---输出消耗的时间(秒)
dump( debug('begin','end','m')); ---输出消耗的内存 4,一些思路
1,首页有所在城市,默认是北京,可以自由切换其他城市
思路:城市保存在session里面,base控制器调用得到城市的方法,然后赋值到模板 方法是这样的:找数据库,得到默认城市(default参数=1)
if(input('get.default_city'))
{
城市=get请求的城市
//加入到session
}
elseif(session有城市)
{
城市=session的城市
}
else
{
城市=默认城市
} 2,thinkphp+mysql的find_in_set可以从字段的1,2,3中查询2
用途:1个商品属于分类2,也属于分类3,分类字段值为2,3
通过c_id=2能查到c_id=3也能查到这条数据
http://www.cnblogs.com/xiaoxi/p/5889486.html
  
  3,sql一般先创建好了,然后再导入到数据库
    模板sql.sql:
    

    /*创建*/
    create database conpany charset=utf8;
    /*选择数据库*/
    use conpany;
    /*创建导航表*/
    create table user(
    id int not null auto_increment primary key,
    name varchar(10) not null default '' comment '名称'
    )charset=utf8;
    /*创建一个超级管理员*/
    insert into user values(default,'admin');

 
5,待学习
  1,php面向对象的技术
  2,MySQL的精通
  3,http协议
  4,文件上传下载
  5,smarty
  6,错误异常
  7,

thinkphp新的心得的更多相关文章

  1. thinkphp框架使用心得

    接触的第一个PHP框架就是TP,在使用的了一段时间后就放弃了,说实话TP的弊端挺多,之后又接触laravel框架,慢慢的就爱上laravel这个框架了.这段时间由于公司的原因,又不得不使用thinkp ...

  2. flex新的心得

    主要是对于flex: 与width: 的心得,先看代码. <head> <meta charset="UTF-8"> <meta name=" ...

  3. jquery 选择器 -高级使用 新的 心得

    jQuery的each函数: each函数等同于c语言中的for函数: 里面每次循环的 "context 上下文" == 当前的dom ,可以使用this, 也可以使用$(this ...

  4. jquery validate学习心得

    据说,javascript最初的由来就是为了解决表单的验证问题,当然现在的js已经能够用来做各种各样炫酷的效果,不过表单验证一直以来都是js很重要的一个用途(在博客园第一篇博客,不知道说些什么开头~~ ...

  5. EasyUI文档学习心得

    概述 jQuery EasyUI 是一组基于jQuery 的UI 插件集合,它可以让开发者在几乎完全不需要CSS以及复杂的JS代码情况下完成美观且功能强大的Web界面. 本文主要说明一些如何利用Eas ...

  6. C#模板设计模式使用和学习心得

    模板设计模式: 模版方法模式由一个抽象类和一个(或一组)实现类通过继承结构组成,抽象类中的方法分为三种: 抽象方法:父类中只声明但不加以实现,而是定义好规范,然后由它的子类去实现. 模版方法:由抽象类 ...

  7. Linux简单编程学习心得

    在Linux环境下简单编程学习心得 linux编程过程 在上周的<信息安全设计基础>的课程学习中学习到了在虚拟的linux环境下简单的编程.学习过程中接触到了vim.gcc和gcd在实验楼 ...

  8. Reactjs 列表优化的一些心得

    前言 在应用开发中,列表是我们使用频率非常高的一种展现形式,在reactjs项目中更是如此.无处不在的使用更是需要我们小心触发性能瓶颈的深水炸弹. 下面就我最近的总结出的几点心得分享给大家,有什么问题 ...

  9. 再讲IQueryable<T>,揭开表达式树的神秘面纱

    接上篇<先说IEnumerable,我们每天用的foreach你真的懂它吗?> 最近园子里定制自己的orm那是一个风生水起,感觉不整个自己的orm都不好意思继续混博客园了(开个玩笑).那么 ...

随机推荐

  1. z3学习档案

    Reference: 看雪-z3巧解逆向 知乎:Z3一把梭 z3 solver学习 使用z3约束求解器解决CTF中的题目 Playing with Z3,hacking the serial chec ...

  2. 我的第一个原生Web Components——滑块(SingleSlider)

    写着写着,就会跑偏,没错又走上了一个岔道……就是不知道这条岔道以后会不会越来越宽,有的说他是未来,有的说…… 这里不知道,也不做什么评断.减少一些重复性的工作,提高开发效率这是最根本的.说白了就是偷懒 ...

  3. ORACLE10G非归档模式下异机迁库(文件迁移)

    环境信息: 源库 目标库 操作系统 WIN7 WIN SVR 2012 R2 系统盘符 C,D,E,F C,D IP x.x.x.216 x.x.x.112 数据库版本 10.2.0.4.0 - 64 ...

  4. Linux下用Bash语言实现判断素数的功能

    题目链接: 题目描述 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息. 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime 样例输入 97 样例输出 pri ...

  5. [SDOI2006] 仓库管理员的烦恼 - 二分图最大权匹配

    最小化代价,即最大化"本土"货物的数量 于是就是个二分图最大权匹配裸题 #include <bits/stdc++.h> using namespace std; #d ...

  6. Python中pip的使用

    1.pip安装模块 pip install 模块名称 -i 安装源 pip install requests -i https://mirrors.aliyun.com/pypi/simple/

  7. openlayers 保存当前地图View为图片

    /** * 保存地图为图片工具栏 */function addMapToolSavePicture() { var saveElement = document.createElement('a'); ...

  8. 跨域 node git

    promise 异步回调地狱:就是多个异步请求嵌套的表现 瑕疵:后期维护难 解决:通过promise技术 什么是promise:就是一种异步编程的解决方案 有三个状态:进行中.成功了,失败了 var ...

  9. 题解【洛谷P3574】[POI2014]FAR-FarmCraft

    题面 简化版题意: 有一棵 \(n\) 个点的树,有边权. 你初始在 \(1\) 号节点,你需要走遍整棵树为 \(2 \sim n\) 号点的居民分发电脑,但你的汽油只够经过每条边恰好两次. 一个居民 ...

  10. 测试linux是否能访问外网

    方法1 curl -l http://www.baidu.com 方法2 wget http://www.baidu.com