彩世界平台-彩世界时时app-彩世界开奖app苹果下载

热门关键词: 彩世界平台,彩世界时时app,彩世界开奖app苹果下载

您的位置:彩世界平台 > 彩世界平台 > ThinkPHP 3.2 自定义基类 Model

ThinkPHP 3.2 自定义基类 Model

发布时间:2019-11-15 10:06编辑:彩世界平台浏览(193)

       ThinkPHP 提供了一个 Model 类,供其他的 Model 进行继承。Model 类中是 MVC 中的模型类,它是调用 持久层 的上层类。感觉这么描述问题很多,但是有什么办法呢?但是,这个 Model 有时无法满足我们的一些需求,因此我们需要自定义一个 Model 类出来,不过自定义的 Model 同样要继承 TP 提供的 Model 类,而把我们自定义的 Model 类作为我们项目中的 Model 基类。我怎么感觉我在说绕口令,等等...我有点晕。

    本文实例讲述了ThinkPHP5.0框架控制器继承基类和自定义类。分享给大家供大家参考,具体如下:

     

    继承系统控制器基类:

    无聊的需求

    <?php
    namespace appindexcontroller;
    use thinkController;
    class Index extends Controller
    {
      public function hello()
      {
        return 'hello,world';
      }
    }
    

      在使用 Java 的开源项目 JeeSite 时,养成了一个不好的习惯,习惯给每张表都增加 create_by、create_date、update_by、update_date、remarks 和 del_flag 这么几个字段。如果每张表都有这几个字段,那么对每张表进行 insert 时都会对以上的字段进行设置,对每张表进行 update 时都会对其中部分字段进行更新,对每条记录进行 delete 时都其实是对 del_flag 字段进行 置位。重复操作很多,一些操作方法被修改。那么,这个时候就要自定义一个自己的 Model 来作为项目的 基类 了,这个 Model 就负责干上面我说的那些事情了。

    或者自定义一个基础控制器类Base:

     

    <?php
    namespace appindexcontroller;
    use thinkController;
    class Base extends Controller
    {
    }
    

    自定义一个 Model

    可以在Base控制器类中定义一些公共方法(如果对类的基本知识不够熟悉的话,参考PHP的类与对象部分说的非常清楚,在此不做深入了)。

      自定义一个 Model,Model 中至少重新 TP 提供的 Model 中的 add、save、delete 和 select 方法。

    然后应用下面的所有控制器类都继承Base:

      定义代码如下:

    <?php
    namespace appindexcontroller;
    use appindexcontrollerBase;
    class Index extends Base
    {
      public function hello()
      {
        return 'hello,world';
      }
    }
    
     1 <?php
     2 namespace AdminModel;
     3 use ThinkModel;
     4 
     5 /**
     6  * 项目中其他 Model 类的基类
     7  * 该类继承自 TP 提供的基类 Model
     8  */
     9 class BaseModel extends Model {
    10     
    11     /**
    12      * 继承基类 Model 的 add 方法
    13      * 自动插入 id create_by create_date update_by update_date del_flag
    14      */
    15     public function add($data='',$options=array(),$replace=false) {
    16         
    17         $data["id"]          = $this->getUuid();
    18         $data["create_by"]   = "";
    19         $data["create_date"] = date("Y-m-d H:i:s");
    20         $data["update_by"]   = "";
    21         $data["update_date"] = date("Y-m-d H:i:s");
    22         $data["del_flag"]    = '0';
    23         
    24         return parent::add($data, $options, $replace);
    25     }
    26     
    27     /**
    28      * 获得 未删除 的所有数据
    29      * 记录是否被删除通过 del_flag 字段来进行确定
    30      */
    31     public function select($options=array()) {
    32         $map["del_flag"] = 0;
    33         $this->where($map);
    34         
    35         return parent::select($options);
    36     }
    37     
    38     /**
    39      * 获取 全部 的所有数据
    40      */
    41     public function selectAll($options=array()) {
    42         return parent::select($options);
    43     }
    44     
    45     /**
    46      * 更新数据
    47      * 更新数据时,要更新 update_by update_date 两个字段
    48      */
    49     public function save($data='',$options=array()) {
    50         $data["update_by"]   = "";
    51         $data["update_date"] = date("Y-m-d H:i:s");
    52         
    53         return parent::save($data, $options);
    54     }
    55     
    56     /**
    57      * 删除也是更新
    58      * 设置 删除 标志位即可
    59      */
    60     public function delete($data='',$options=array()) {
    61         $data["del_flag"] = 1;
    62         
    63         return parent::save($data, $options);
    64     }
    

    建议给应用统一定义一个自己的控制器基类,方便后期扩展。

    本文由彩世界平台发布于彩世界平台,转载请注明出处:ThinkPHP 3.2 自定义基类 Model

    关键词:

上一篇:php 计算两个日期相差天数

下一篇:没有了