本文以YII 2.0.7为例。

概述

首先看看多应用和多模块的特点:

多应用的特点:

  • 独立配置文件
  • 独立域名

多模块的特点:

  • 统一配置文件
  • 统一域名

那么,实际该怎么决定使用多应用还是多模块呢?

  • 对于前后台分离,例如后台需要单独的域名进行管理这个应该用多应用
  • 多应用的配置完全不一样,用多应用比较方便,配置文件使用不同的
  • 多应用需要更多的域名配置,比价麻烦,对于小项目也不区分域名,多模块比较好

多应用

最简单的方法是下载官网的 Yii2的高级应用程序模板:yii-advanced-app-2.0.12.tgz。下载下来解压后,进入advanced目录,运行:

# Windows
init.bat# Linux
init

会在frontendbackend两个应用的web目录生成入口文件index.phpfrontendbackend分别表示前台和后台应用,里面的目录结构是一样的:

assets/
config/
controllers/
models/
runtime/
views/
web/

运行:

$ cd advanced/frontend/web
$ php -S 0.0.0.0:8888
PHP 5.6.22 Development Server started at Sun Aug 20 21:10:28 2017
Listening on http://0.0.0.0:8888

打开浏览器输入http://0.0.0.0:8888就可以访问默认的首页了。

建议model还是放在根目录的common/models里。

多模块

多模块可以参照http://www.yiichina.com/doc/guide/2.0/structure-modules配置。示例:在frontend里新建一个h5应用:

1、建立相关目录

$ cd frontend
$ mkdir -p modules/h5 && cd modules/h5
$ mkdir controllers
$ touch Module.php

2、Module.php内容示例:

<?php
namespace frontend\modules\h5;class Module extends \yii\base\Module
{public function init(){parent::init();$this->params['foo'] = 'bar';// ...  其他初始化代码 ...}
}

3、在frontend/config/main.php增加模块的申明:

'modules' => ['h5' => ['class' => 'frontend\modules\h5\Module',// ... 模块其他配置 ...],
],

4、在modules/h5/controllers新建控制器类:

<?php
namespace frontend\modules\h5\controllers;use Yii;
use common\models\LoginForm;
use frontend\models\SignupForm;
use frontend\models\ContactForm;
use yii\base\InvalidParamException;
use yii\web\BadRequestHttpException;
use yii\web\Controller;class SiteController extends Controller
{public function actionIndex(){return "hello h5 module";//return $this->render('index');}
}

浏览器访问:http://localhost:8888/index.php?r=h5/site/index 即可访问。

还有一种方法也可以实现类似该URL路由的访问形式,例如r=test/site/index。只需要在frontend/controllers目录新建个子目录叫test,把控制器放在里面,然后改下命名空间为

namespace frontend\controllers\test;

就可以了。这种可以用于API版本控制,例如:

r=v1/site/index
r=v2/site/index

转载于:https://www.cnblogs.com/52fhy/p/7401625.html

Yii 框架学习--03 多应用多模块相关推荐

  1. PHP开发框架之YII框架学习——碾压ThinkPHP不是梦

      前  言 JRedu 程序猿是一种慵懒的生物!能少敲一行代码,绝对不会多敲一个字符!所以,越来越多的开发框架应运而生,在帮助我们完成功能的同时,极大程度上也帮我们节省了人力物力,而且也提高了系统的 ...

  2. Yii 框架学习--01 框架入门

    Yii 是一个高性能的,适用于开发 WEB2.0 应用的 PHP 框架. Yii目前有两个主要的版本: 2.0 和 1.1.本文以YII 2.0.7为例. 环境需求 Yii2.0 框架有一些系统上的需 ...

  3. yii框架学习(一)yii框架介绍

    一.什么是yii框架 Yii读做易,可以看做是Yes it is的缩写. Yii有两种中文含义,1.极致简单.2.不断演变. Yii是一个基于组件.用于开发大型Web应用的高性能PHP框架.Yii提供 ...

  4. yii框架学习(五)get、post请求如何接收请求参数

    get请求接收参数 修改之前的actionIndex请求,在括号中添加$name参数既可以使用 public function actionIndex($name){echo 'Hello World ...

  5. layui框架学习(29:滑块模块)

      Layui中的滑块模块slider支持用户通过移动滑块从一系列的值中进行选择,比起手输数值,使用滑块的视觉效果更直观.slider滑块模块的基本用法及效果如下所示: <div id=&quo ...

  6. yii框架学习笔记三

    运行config的时候,如果cwebapplication定义有public的属性,比如basePath,则不用调用魔术函数__set application=>run processreque ...

  7. Python Django框架学习03:Django 安装

    在安装 Django 前,系统需要已经安装了Python的开发环境.接下来我们来具体看下不同系统下Django的安装. Window 下安装 Django 如果你还未安装Python环境需要先下载Py ...

  8. 滴滴Booster移动APP质量优化框架 学习之旅 三

    推荐阅读: 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) 滴滴Booster移动App质量优化框架-学习之旅 二对重复资源 ...

  9. 滴滴Booster移动APP质量优化框架 学习之旅 二

    推荐阅读: 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) 续写滴滴Booster移动APP质量优化框架学习之旅,上篇文章分 ...

最新文章

  1. YSLOW法则中,为什么yahoo推荐用GET代替POST?
  2. .h头文件 .lib库文件 .dll动态链接库文件关系
  3. EasyUI 1.3.6 行号显示不全
  4. pandas将表中的字符串转成数值型
  5. iOS之深入解析weak关键字的底层原理
  6. 2021游戏市场风向标报告
  7. 回文质数(洛谷P1217题题解,Java语言描述)
  8. 系统学习机器学习之参数方法(三)
  9. 支持全系列阵列卡的专用服务器PE工具
  10. leetcode 904 滑动窗口
  11. 108-周跳探测之GF
  12. 苹果超薄笔记本MBA设计缺陷
  13. 微信可以用邮箱吗?邮箱无法分享到微信怎么办?微信邮箱从哪找呢
  14. daydream手柄
  15. 女人喜欢大男人还是小男人
  16. eclipse 显示中文或者英文
  17. html5 霸刀,基于Html5技术研发3D页游《霸刀》3月28日首测
  18. 机房收费系统合作版(四):一路走来感谢有你相伴
  19. 手撸架构,Redis面试41问
  20. 【C++】JOISC 2020 Day3原题+翻译+解析+代码

热门文章

  1. 使用 UIWebView 来播放视频
  2. 鸿雁电器oa系统中决策支持模块效果
  3. Android从零开始(十一)
  4. asp.net 中Gridview 使用总结
  5. document.body ,window.screen javascript对象属性取值意义
  6. 追MM与Java的23种设计模式
  7. hdu2604 矩阵快速幂
  8. hdu4280 最大流DINIC
  9. C语言经典例35-字符串反转
  10. 【Android 逆向】ELF 文件格式 ( 程序头数据 | 节区头数据 | 动态符号表 )