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学习总结的更多相关文章

  1. ThinkPhp学习13

    原文:ThinkPhp学习13 简单登录验证 创建Login类 <?php class LoginAction extends Action { function index(){ $this- ...

  2. ThinkPhp学习12

    原文:ThinkPhp学习12 二.输出模板内容      (重点) a.display 1.display中没有参数    $this->display(); 2.可以带参数    $this ...

  3. ThinkPhp学习11

    原文:ThinkPhp学习11 一.模板的使用        (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[i ...

  4. ThinkPhp学习10

    原文:ThinkPhp学习10 查询操作 Action模块 User下的search public function search(){ //判断username是否已经传入,且不为空 if(isse ...

  5. ThinkPhp学习07

    原文:ThinkPhp学习07 简单CRUD操作 public function show() { $m=M('User'); // $arr=$m->find(2); //查找id=2的数据, ...

  6. ThinkPhp学习08

    原文:ThinkPhp学习08 一.普通查询方式 a.字符串 $arr=$m->where("sex=0 and username='gege'")->find(); ...

  7. ThinkPhp学习09

    原文:ThinkPhp学习09 三.区间查询 $data['id']=array(array('gt',4),array('lt',10));//默认关系是 and 的关系 //SELECT * FR ...

  8. ThinkPhp学习06

    原文:ThinkPhp学习06 一.简单学习修改用户信息模块 1.编写UserAction.class.php <?php class UserAction extends Action{ pu ...

  9. ThinkPhp学习05

    原文:ThinkPhp学习05 一.ThinkPHP 3 的CURD介绍  (了解)二.ThinkPHP 3 读取数据    (重点) 对数据的读取 Read $m=new Model('User') ...

随机推荐

  1. volatile修饰符

    Volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值.而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存.这样在任何时刻,两个不同的线程总是看到某个成 ...

  2. 高通vuforia+Unity3D 制作ar app

    很简单就可以用Unity3D做出增强现实的一个小例子 新人第一次写博客,若出现错误望指正^_^ 需要下载de东西: unity3d 5.0 http://unity3d.com/get-unity   ...

  3. Android基础测试题(二)

    今天给大家带来的是Android基础测试题(二) 题目要求: 定义一个5位长度的整型数组并初始化,然后构建方法根据用户传入的数字判断是否存在数组中,如果存在,返回所在位置,如果不存在,返回-1 首先第 ...

  4. JS this指向

    正常模式 在正常模式下独立函数的的 this 指向 undefined 或 window. <script type="text/javascript"> functi ...

  5. log4j分离日志输出 自定义过滤 自定义日志文件

    普通的log4j.properties 定义: ### set log levels ### log4j.rootLogger = debug,D,E ## Disable other log log ...

  6. PHP进程通信基础——shmop 、sem系列函数使用

    PHP进程通信基础--shmop .sem系列函数使用 进程通信的原理就是在系统中开辟出一个共享区域,不管是管道也好,还是共享内存,都是这个原理.如果心中有了这个概念,就会很方便去理解代码.由于官网上 ...

  7. PHP 信号管理

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  8. HAOI2017前

    NOIP后想换一个看起来比较高端的博客,于是尝试用github+hexo建站,地址大概是这样的,搞了一周左右.. 最终以失败告终,一是代码高亮有bug,二是数学公式有bug,三是博文没法快速搬迁QAQ ...

  9. Day7-面向对象

    面向对象编程定义 OOP编程是利用"类"和"对象"来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得更简单,并 ...

  10. Nginx配置(全)

    安装 * windows下:直接到官网下载windows下的稳定版本,解压到任意位置即可 * Linux下:一种方式是yum或者sudo apt-get install 另一种是源码编译安装,先安装p ...