首页 > 代码库 > 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 增加逻辑层
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。