ThinkPHP5.0框架调整器世襲基类和自定义类示例

   ThinkPHP 提供了叁个 Model 类,供其余的 Model 举办继续。Model 类中是
MVC 中的模型类,它是调用 长久层
的上层类。认为那样描述难题多多,可是有哪些方法吧?可是,这一个 Model
一时不恐怕满意大家的片段需求,因而大家供给自定义壹个 Model
类出来,但是自定义的 Model 相近要三番一遍 TP 提供的 Model
类,而把大家自定义的 Model 类作为我们项目中的 Model
基类。笔者怎么以为自身在说绕口令,等等…作者有一点晕。

本文实例陈说了ThinkPHP5.0框架调控器世袭基类和自定义类。分享给我们供大家仿照效法,具体如下:

 

世襲系统调控器基类:

猥琐的供给

<?php
namespace app\index\controller;
use think\Controller;
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 app\index\controller;
use think\Controller;
class Base extends Controller
{
}

自定义三个 Model

能够在Base调节器类中定义一些共用措施(假若对类的基本知识非常不够掌握的话,参谋PHP的类与目的部分说的老乐山解,在这里不做深切了卡塔尔。

  自定义三个 Model,Model 中起码重新 TP 提供的 Model 中的
add、save、delete 和 select 方法。

下一场使用上面包车型大巴保有调节器类都两次三番Base:

  定义代码如下:

<?php
namespace app\index\controller;
use app\index\controller\Base;
class Index extends Base
{
  public function hello()
  {
    return 'hello,world';
  }
}
 1 <?php
 2 namespace Admin\Model;
 3 use Think\Model;
 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     }

提出给使用统一定义三个团结的调控器基类,方便后期扩大。

  那样,大家的 BaseModel 就定义好了,今后项目中的 Model 就不再继续 TP
的 Model 类了,而是继续大家自定义的 BaseModel 了。

PHP不辅助多三番两遍,假设急需持续八个类,能够透过引进trait

 

越多关于thinkPHP相关内容感兴趣的读者可查阅本站专项论题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总计》、《ThinkPHP常用艺术总括》、《codeigniter入门教程》、《CI(CodeIgniter)框架进级教程》、《Zend
FrameWork框架入门教程
》及《PHP模板技艺总计》。

继承我们定义的基类

企望本文所述对我们基于ThinkPHP框架的PHP程序设计有所扶植。

  世袭的 BaseModel 的方法和继续 Model 的法子是同样的,只是利用 use
引进命名空间到当前坚决守住域时的须要校正为大家的命名空间,并不是再去选拔 TP
提供的命名空间。代码如下:

你或者感兴趣的稿子:

1 <?php
2 namespace Admin\Model;
3 use Admin\Model\BaseModel;
4 
5 class TrunkModel extends BaseModel {

  use 引进的命名空间是 Admin\Model\BaseModel ,因为大家定义的
BaseModel 的命名空间是 Admin\Model,因为此处的 TrunkModel 和 BaseModel
在三个命名空间下,省去 use 也是足以的。

 

  那样,在咱们用 D 方法实例化 TrunkModel 的目的后,使用 add
方法插入数据时,就能先调用 BaseModel 中的 add
方法了,那样我们每张表皆有个别 create_by 等生机勃勃层层字段就都会自行获得了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图