ThinkPHP学习总结
ThinkPHP学习总结
网站开发使用的thinkPHP5.0在此总结备查
MVC关系功能图
一、Thinkphp开发规范
l 类
类库、函数文件统一以.php为后缀;
类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致(命名空间必填);
类名和类文件名保持一致,统一采用驼峰法命名(首字母大写);
在一个类中调用另一个类必须标明被调用类的命名空间
l 变量、方法命名使用多个英文单词命名其间用下划线连接
l 应用目录
l 一般程序流程:访问模块的控制器方法————方法调用视图————视图等待事件相应————事件相应向控制器相应方法通过参数发送请求————控制器根据参数做出处理判断在模型中调用数据返回给视图————视图根据返回数据响应用户。
l 如CSS、js等静态资源应该放在public目录下
l 访问Url规则:使用http://127.0.0.1/public/index.php/app名/方法所属控制器/方法;根据方法指令访问视图。 形如:http://127.0.0.1/public/index.php/cyh/Index/action2
l 使用phpstudy构建的apache服务器根目录在WWW文件夹。而使用虚拟机构建的服务器根目录在public。在调用js,css文件时路径会有所不同
l 视图负责显示界面、控制器负责逻辑判断、模型负责数据的处理。视图访问控制器控制器调用模型类方法处理数据并且返回控制器,控制器传到视图。
l assign方法传值给模版(“模版变量”,控制器给模版变量所赋值);
l 在应用目录下的config.php为配置文件提供相应设置(例如:验证码)。
二、控制器(Controller)
控制器使用系统提供方法必须继承Controller类(class **** extends Controller)
l 前置操作
protected $beforeActionList = [
'first',
'second' => ['except'=>'hello'],
'three' => ['only'=>'hello,data'],
];
逗号前为前置操作名,逗号后定义在那些操作执行前执行逗号前方法
逗号后有三种格式(如上): 1.无值——这个操作在该控制器执行所有方法前执行
2.except——除去一些方法外控制器所有方法执行前执行操作
3.only——只有一些方法在执行时才执行该操作
l 页面跳转
使用$this->success(a,b)、$this->error(a,b)方式跳转页面参数a为提示信息参数b为跳转页面的url,不给予b参数则默认跳转上一个页面
三、模型(model)
Thinkphp在模型板块提供了对数据库操作的种种方法(增删改查)
而在实际对数据的查询过程多使用数据库—查询—构造器中的链式查询把多个条件连接在一起执行查询操作
l 查询操作
选择相应值时 其value为其对应id在构造where查询语句时会调用convert方法对其”翻译”
代码:
public function convert($id){
$dept=new DeptModel();
$deptList=$dept->where("dept_id",'in',$id)->column('dept_name');
return implode(',',$deptList);
}
四、视图(view)
使用html、css来展现视图用javascript做为前端和后台的沟通桥梁
五、基于easy ui数据表格实现流程
控制器入口index 方法,实例化相应表的基类(重写表名属性)该类继承CommonModel(一个产生查询的条件数组的方法),查找相应数据传值到视图,视图对应JS方法( initGrid(grid,url,columns_def))中调用控制器中ac1方法得到表单数据(ac1会实例化**datagird 调用datagird中的datagirdJson()得到相应数据显示)每当点击查询按钮时调用JS中query()方法把查询数据处理为josn利用‘load’返回给ac1 以同样的方法运行到getwhere()方法这时接受到的dict不再为空,把daict(查询条件的josn包)给filer构造为where的查询语句返回
到datagirdJson()串上其它数据库操作语句,执行返回后做成josn发给页面查询结束。
六、基于easy ui下拉复选树的实现
效果图:
构造树需要的josn格式
官方demo:
[{
"id":1,
"text":"My Documents",
"children":[{
"id":11,
"text":"Photos",
"state":"closed",
"children":[{
"id":111,
"text":"Friend"
},{
"id":112,
"text":"Wife"
},{
"id":113,
"text":"Company"
}]
},{
"id":12,
"text":"Program Files",
"children":[{
"id":121,
"text":"Intel"
},{
"id":122,
"text":"Java",
"attributes":{
"p1":"Custom Attribute1",
"p2":"Custom Attribute2"
}
},{
"id":123,
"text":"Microsoft Office"
},{
"id":124,
"text":"Games",
"checked":true
}]
},{
"id":13,
"text":"index.html"
},{
"id":14,
"text":"about.html"
},{
"id":15,
"text":"welcome.html"
}]
}]
在访问控制器index方法时通过控制器方法treejosn获得构造的josn再传到视图其代码如下:
public function treejosn(){
$dept=new DeptModel();
$de=$dept->field('dept_name')->select();
$n=count($de);
//dump($m);
//系部
$a="[";
/*\"id\":0,
\"state\":\"closed\",
\"text\":\"系部\",
\"children\":";*/
for($i=0;$i<$n;$i++) {
$deptList=$dept->field('dept_name')->where("dept_id",$i+1)->select();
$a=$a."{
\"id\":".($i+1).",
\"text\":"."\"".$deptList[0]['dept_name']."\""."";
if($i+1==$n){
$a=$a."}";
}
else{
$a=$a."},";
}
}
$a=$a."]";//]
// print_r($a);
return $a;
}
ThinkPHP学习总结的更多相关文章
- ThinkPhp学习13
原文:ThinkPhp学习13 简单登录验证 创建Login类 <?php class LoginAction extends Action { function index(){ $this- ...
- ThinkPhp学习12
原文:ThinkPhp学习12 二.输出模板内容 (重点) a.display 1.display中没有参数 $this->display(); 2.可以带参数 $this ...
- ThinkPhp学习11
原文:ThinkPhp学习11 一.模板的使用 (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[i ...
- ThinkPhp学习10
原文:ThinkPhp学习10 查询操作 Action模块 User下的search public function search(){ //判断username是否已经传入,且不为空 if(isse ...
- ThinkPhp学习07
原文:ThinkPhp学习07 简单CRUD操作 public function show() { $m=M('User'); // $arr=$m->find(2); //查找id=2的数据, ...
- ThinkPhp学习08
原文:ThinkPhp学习08 一.普通查询方式 a.字符串 $arr=$m->where("sex=0 and username='gege'")->find(); ...
- ThinkPhp学习09
原文:ThinkPhp学习09 三.区间查询 $data['id']=array(array('gt',4),array('lt',10));//默认关系是 and 的关系 //SELECT * FR ...
- ThinkPhp学习06
原文:ThinkPhp学习06 一.简单学习修改用户信息模块 1.编写UserAction.class.php <?php class UserAction extends Action{ pu ...
- ThinkPhp学习05
原文:ThinkPhp学习05 一.ThinkPHP 3 的CURD介绍 (了解)二.ThinkPHP 3 读取数据 (重点) 对数据的读取 Read $m=new Model('User') ...
随机推荐
- C#设计模式(1)——单例模式
一.概念:确保一个类只有一个实例,并提供一个全局访问点. 二.单例模式具备如下几个特点: 1.只有一个实例. 2.能够自我实例化. 3.提供全局访问点. 三.代码实现 1.简单实现 /// < ...
- 八月22日,django知识点总结:
八月22日,知识点总结: python manage.py makemigrations python manage.py migrate unique=true是指这个字段的值在这张表里不能重复,所 ...
- 使用SharpZipLib实现文件压缩、解压
接口 public interface IUnZip { /// <summary> /// 功能:解压zip格式的文件. /// </summary> /// <par ...
- linux设置定时备份mysql数据库
最近写自己的项目,买了阿里云服务器,可以在云上根据自己想到的需求随意使用技术,感觉很爽.备份mysql流程如下: 环境:CentOS Linux release 7.2.1511 (Core) mys ...
- js获取当前系统时间
Js获取当前日期时间及其它操作var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份 ...
- 学记:为spring boot写一个自动配置
spring boot遵循"约定优于配置"的原则,使用annotation对一些常规的配置项做默认配置,减少或不使用xml配置,让你的项目快速运行起来.spring boot的神奇 ...
- xshell有大量打印时,显示信息不全
使用xshell远程登录ssh时,编译大型工程或在minicom打印嵌入式设备的信息,发现显示不全. 在网上搜索了一下也没有发现有解决办法. 经过实验发现 xshell terminal type设置 ...
- 利用django创建一个投票网站(三)
创建你的第一个 Django 项目, 第三部分 这一篇从第二部分(zh)结尾的地方继续讲起.我们将继续编写投票应用,并且聚焦于如何创建公用界面--也被称为"视图". 设计哲学 Dj ...
- spring boot + swagger + mysql + maven
1.首先编写 yaml 文件,创建项目所需的接口,在swagger.io官网上生成 spring boot项目: 2.由于生成的spring boot项目是公共类的所以还需要修改成所需的项目名称,主要 ...
- Kinect 总结---Kinect基本认识
玩了Kinect也有差不多一年的时间了,觉得Kinect是个挺好玩挺有未来的玩意.但是很经常做完了一次,下次又得重新看源码,没有把Kinect里的知识总结起来变为自己的知识,所以特意重新总结一下自己使 ...