首页 > 代码库 > yii2 增加逻辑层

yii2 增加逻辑层

 现在的框架基本是mvc模式了,比如thinkphp,ci,yii框架等等

由于项目做大,逻辑复杂之后,简单的mvc模式已经不能满足需求,总有那么几个model在不断的变大膨胀,这些model之间产生了网状的相互依赖关系。维护起来比较麻烦。

于是我们就需要把这个或者这些膨胀了的model解耦出来。

于是我们考虑增加一个逻辑层Logic.

首先,我们有一个已经安装好的yii项目。没有安装的可以参考我之前写的yii2 高级模版安装

 

安装完成之后

主要有以下几个目录

backend

common

console

frontend

vedor

 

我们在comom目录下新增一个文件夹logic,形成common\logic\ 这样的目录结构。

我们要让他形成这样的调用controller->logic->model,controller不再直接调用model,由logic去调用model.

假设我们有一个ArticleController.php,一个ArticleLogic.php,一个模型Article.php

顾名思义。

控制器层ArticleController.php

 1 <?php 2 namespace frontend\controllers; 3  4 use Yii; 5 use yii\base\InvalidParamException; 6 use yii\web\BadRequestHttpException; 7 use yii\web\Controller; 8  9 use common\logic\ArticleLogic;10 11 12 /**13  * article controller14  */15 class ArticleController extends Controller16 {17     /**18      * http://yii_advanced_app_2_0_9.me/index.php?r=article/get_article_info&article_id=3019      * 获取信息20      */21     public function actionGet_article_info()22     {23         $condition[‘id‘]=Yii::$app->request->get(‘article_id‘);24         25         $article_logic=new \common\logic\ArticleLogic();26         $get_article_info_result=$article_logic->get_article_info($condition);27         28         print_r($get_article_info_result);die();29         30     }31 }

 

逻辑层ArticleLogic.php

<?php/** * 文章 * @author Yoper 944975166@qq.com * http://www.linglingtang.com * */namespace common\logic;use Yii;/** * article Logic */class ArticleLogic extends YoxbaseLogic{    private $article_model=null;    public function __construct()    {        parent::__construct();        $this->article_model=new \common\models\Article();    }    /**     * 获取文章信息     * @param array $condition     * @return multitype:number unknown     */    public function get_article_info($condition)    {        $result = array(‘status‘=>0);                $get_article_info_result = $this->article_model->get_article_info($condition);        if($get_article_info_result[‘status‘]<1)        {            $result[‘message‘]=$get_article_info_result[‘message‘];            return $result;        }        $result[‘status‘]=1;        $result[‘data‘]=$get_article_info_result[‘data‘];        return $result;    }}

 

模型层Article.php

<?php/** * 文章 * @author Yoper 944975166@qq.com * http://www.linglingtang.com * */namespace common\models;use Yii;use yii\base\NotSupportedException;use yii\behaviors\TimestampBehavior;use yii\db\ActiveRecord;/** * Article model * */class Article extends ActiveRecord{    /**     * @inheritdoc     */    public static function tableName()    {        return ‘{{%article}}‘;    }    /**     * @inheritdoc     */    public function behaviors()    {        return [            TimestampBehavior::className(),        ];    }    /**     * @inheritdoc     */    public function rules()    {        return [            [‘status‘, ‘default‘, ‘value‘ => self::STATUS_ACTIVE],            [‘status‘, ‘in‘, ‘range‘ => [self::STATUS_ACTIVE, self::STATUS_DELETED]],        ];    }    public function get_article_info($condition)     {        $result = array(‘status‘=>0);        $info=$this->find()->where($condition)->one()->attributes;                $result[‘status‘]=1;        $result[‘message‘]=‘获取成功‘;        $result[‘data‘]=$info;        return $result;    }}

这样,我们就可以成功调用数据了。

如图,简单的打印,丑,但是有内涵~

技术分享

 

 

增加逻辑层大功告成。

 

 

 

Yoper

2016.10.06

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

零零糖

 

yii2 增加逻辑层