Yii2中的模块、应用程序(Module,Application)

原文地址:http://www.kuitao8.com/20140626/2715.shtml

模块(Module )

模块是一个功能独立的逻辑单元,每一个模块都可以包含有多个子模块,但每个模块只能有一个对应的父模块(如果有的话)。它的定义在yii\base\Module

应用程序(Application)

Yii2中的应用程序有两种:web应用程序(yii\web\Application)和控制台应用程序(yii\console\Application)。他们都继承于yii\base\Application。而yii\base\Application又是从模块yii\base\Module 继承来的。

所以web应用程序(yii\web\Application)和控制台应用程序(yii\console\Application)也都是模块。

但他们和普通的模块又不一样,这两个是可直接运行的特殊的模块,是所有其它自定义模块的根级别的父模块。

我们可以用yii提供的Gii来生成我们需要的模块

  • Module Class输入完整的命名空间和模块类名称
  • Module ID 是这个模块的唯一标识,不能和其它模块重复。

点击generator后生成
 
这个用Gii添加一个admin模块的界面。

我们用相同的方法再添加一个bbs模块和一个blog模块。最后生成的项目目录结构如下。
 
其中左侧的是配置文件,把这三个模块作为base application的子模块。
右侧为和modules目录下面生成的三个模块。每个模块都是独立的功能单元,可包含controller、views等等。

模块ID及访问

在yii中所有的module、controller、action都有id,唯独application是一个特例,它的ID为空,也就是说可运行的根结点的应用程序的ID为空。

我们要访问一个模块的话,路由格式为?r=module id/controller id/action id 其中模块的Id就为modules中对应的文件夹
因为应用程序(也就是根模块)的ID为空,所以访问应用程序的时候不需要加模块InD,它的路由格式为?r=controller id/action id

应用程序(Application)也是一种模块(Module),是存在于入口脚本中直接运行的模块。是当前应用程序中其它模块的父模块。模块(Module)中的所有的操作及属性都可应用于应用程序

时间: 06-01

Yii2中的模块、应用程序(Module,Application)的相关文章

Lua中的模块(module)和包(package)详解1

这篇文章主要介绍了Lua中的模块(module)和包(package)详解,本文讲解了require函数.写一个模块.package.loaded.module函数等内容,需要的朋友可以参考下 前言 从Lua5.1版本开始,就对模块和包添加了新的支持,可是使用require和module来定义和使用模块和包.require用于使用模块,module用于创建模块.简单的说,一个模块就是一个程序库,可以通过require来加载.然后便得到了一个全局变量,表示一个table.这个table就像是一个命

Lua中的模块与module函数详解

很快就要开始介绍Lua里的“面向对象”了,在此之前,我们先来了解一下Lua的模块. 1.编写一个简单的模块 Lua的模块是什么东西呢?通常我们可以理解为是一个table,这个table里有一些变量.一些函数… 等等,这不就是我们所熟悉的类吗? 没错,和类很像(实际上我说不出它们的区别). 我们来看看一个简单的模块,新建一个文件,命名为game.lua,代码如下: 复制代码代码如下: game = {}function game.play()    print("那么,开始吧");end

Lua中的模块(module)和包(package)详解

这篇文章主要介绍了Lua中的模块(module)和包(package)详解,本文讲解了require函数.写一个模块.package.loaded.module函数等内容,需要的朋友可以参考下 前言 从Lua5.1版本开始,就对模块和包添加了新的支持,可是使用require和module来定义和使用模块和包.require用于使用模块,module用于创建模块.简单的说,一个模块就是一个程序库,可以通过require来加载.然后便得到了一个全局变量,表示一个table.这个table就像是一个命

yii2中的资源....

1.模板文件中访问view和controller,view : $this,controller :$this->context 模板文件显示流程: 1.控制器会在render中,把控制器本身,模板文件传给view 2.呈现模板文件,首先view会查找主题,主题如果拥有模板文件,则优先使用主题内模板文件.并将模板文件赋值给变量$content 3.呈现布局文件,同样查找主题,并将$content作为变量导入 4.引入模板文件时,是发生在view中,所以$this就是view 2.注册资源 reg

AMD:浏览器中的模块规范

为实现与Node.js相同方式的模块写法,大牛们做了很多努力.但浏览器环境不同于服务器端,它的模块有一个HTTP请求过程(而Node.js的模块文件就在本地),这个请求过程多数使用script tag,script 默认的异步性导致很难实现与Node.js一模一样的模块格式.Modules/Wrappings 使得实现变为现实.虽然和Node.js的模块写法不完全一致,但也有很多相似之处,使得熟悉Node.js的程序员有一些亲切感.但Node.js终究是服务器端的JavaScript,没有必要把

在Linux中运行Nancy应用程序

最近在研究如何将.NET应用程序移植到非Windows操作系统中运行,逐渐会写一些文章出来.目前还没有太深的研究,所以这些文章大多主要是记录我的一些实验. 这篇文章记录了我如何利用NancyFx编写一个自托管(Self-host)的应用程序,并且将其发布到Linux系统中. 什么是NancyFx? 简单地说,这真是一个神奇的框架.它给自己的定义是:lightweigh web framework for .NET.不用不知道,一用吓一跳哈 http://nancyfx.org/ 与微软官方的AS

node中的模块

模块 编写稍大一点的程序时一般都会将代码模块化.在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名. 在编写每个模块时,都有require.exports.module三个预先定义好的变量可供使用. require require函数用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象.模块名可使用相对路径(以./开头),或者是绝对路径(以/或C:之类的盘符开头).另外,模块名中的.js扩展名可以省略.以下是一个例子. var

Raspberry Pi 摄像头模块应用程序文档翻译

http://dreamcolor.net/archives/raspicam-documentation.html —————————————————————————————————————————————————————————————————————— Raspberry Pi 摄像头模块应用程序文档翻译 更新日志: 2014 年 3 月 24 日更新:根据 2013 年 12 月更新的文档,对原译文进行扩展翻译.翻译完毕. 2014 年 3 月 4 日更新:根据 2013 年 12 月更

C#中(dotnet) :assembly和module的不同

编译成module和assembly后的IL有什么不同 同一个代码编译成不同的文件后通过反编译为IL结果如下 编译成netmodule时: Manifest文件: // Metadata version: v4.0.30319 .assembly extern mscorlib { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .ver 4:0:0:0 } .module MyModule.netmodule // MVID: