yii2 增長邏輯層

做者Yoper的csdn博客地址:http://blog.csdn.net/chenyoperphp

做者Yoper的博客園地址:http://www.cnblogs.com/Yoperchen/html

本文《yii2 增長邏輯層》地址:http://www.cnblogs.com/Yoperchen/p/5934136.htmlweb

 

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

因爲項目作大,邏輯複雜以後,簡單的mvc模式已經不能知足需求,總有那麼幾個model在不斷的變大膨脹,這些model之間產生了網狀的相互依賴關係。維護起來比較麻煩。yii2

因而咱們就須要把這個或者這些膨脹了的model解耦出來。mvc

因而咱們考慮增長一個邏輯層Logic.app

首先,咱們有一個已經安裝好的yii項目。沒有安裝的能夠參考我以前寫的yii2 高級模版安裝框架

 

安裝完成以後frontend

主要有如下幾個目錄yii

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 controller
14  */
15 class ArticleController extends Controller
16 {
17     /**
18      * http://yii_advanced_app_2_0_9.me/index.php?r=article/get_article_info&article_id=30
19      * 獲取信息
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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

零零糖

相關文章
相關標籤/搜索