zoukankan      html  css  js  c++  java
  • ThinkPHP学习总结

    ThinkPHP学习总结

     

      网站开发使用的thinkPHP5.0在此总结备查

       MVC关系功能图

     

    一、Thinkphp开发规范

    l 类

    类库、函数文件统一以.php为后缀;

    类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致(命名空间必填)

    类名和类文件名保持一致,统一采用驼峰法命名(首字母大写);

    在一个类中调用另一个类必须标明被调用类的命名空间

    l 变量、方法命名使用多个英文单词命名其间用下划线连接

    l 应用目录

     

    l 一般程序流程:访问模块的控制器方法————方法调用视图————视图等待事件相应————事件相应向控制器相应方法通过参数发送请求————控制器根据参数做出处理判断在模型中调用数据返回给视图————视图根据返回数据响应用户。

    l 如CSSjs等静态资源应该放在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。在调用jscss文件时路径会有所不同

    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)

    使用htmlcss来展现视图用javascript做为前端和后台的沟通桥梁

          五、基于easy ui数据表格实现流程

        控制器入口index 方法,实例化相应表的基类(重写表名属性)该类继承CommonModel(一个产生查询的条件数组的方法),查找相应数据传值到视图,视图对应JS方法( initGrid(grid,url,columns_def))中调用控制器中ac1方法得到表单数据(ac1会实例化**datagird 调用datagird中的datagirdJson()得到相应数据显示)每当点击查询按钮时调用JSquery()方法把查询数据处理为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;
    }

     

     

  • 相关阅读:
    下载安装安卓开发工具
    斐波那契数列
    各位相加
    求连续最大子序列和
    反转字符串中的单词
    统计位数为偶数的数字
    Express框架的整体感知
    node.js当中的http模块与url模块的简单介绍
    formidable处理提交的表单或文件的简单介绍
    30分钟,学会经典小游戏编程!
  • 原文地址:https://www.cnblogs.com/cyh1282656849/p/5817837.html
Copyright © 2011-2022 走看看