YII Framework学习教程-YII的Modules(模块化)

         一个相对来说大的项目。如果按照yii生成的webapp进行开发。所有的controller放到controllers文件夹下,所有的model放到models文件夹下面,如果你有n多个controller和n多的model,是不是就显得这种组织结构过于繁琐,冗余了。还好YII支持Modules结构。你的项目可以分成n多的Module,然后每一个Module有自己的controllers和models。这样的组织结构,无论是开发,管理都方便简洁多了。看看YII的Modules的是组织方式和使用方法。

           1.用yiic创建module

          在 《

YII Framework学习教程-用YIIC快速创建YII应用之三-2011-11-11

》,已经讲了如何用yiic给制定的应用创建一个模块。

          在shell模式下,输入 module 模块名称

    2.module的目录结构

     

│   ├── models
│   │   ├── ContactForm.php
│   │   ├── LoginForm.php
│   │   └── User.php................................................................
│   ├── modules模块的存放目录
│   │   └── testmod一个模块,模块的名字对应是目录的名字,唯一。也是路由中的moduleid
│   │       ├── components模块用到的组件
│   │       ├── controllers包含控制器
│   │       │   └── DefaultController.php默认控制器
│   │       ├── messages国际化
│   │       ├── models模型类文件
│   │       ├── TestmodModule.php模块的类文件
│   │       └── views试图文件
│   │           ├── default默认视图
│   │           │   ├── index.php视图文件
│   │           └── layouts包含布局文件
│   ├── runtime....................................................................
│   │   └── application.log
│   ├── tests
│   │   ├── bootstrap.php
│   │   ├── fixtures
│   │   │   └── tbl_user.php
             

    基本的目录结构如上,当然你可以在自己加入一些自定义的东西。

     

    3.模块的类文件(例如:TestmodModule.php)

<?php

class TestmodModule extends CWebModule
{
	public function init()
	{
		// this method is called when the module is being created
		// you may place code here to customize the module or the application

		// import the module-level models and components
		$this->setImport(array(
			'testmod.models.*',
			'testmod.components.*',
		));
	}

	public function beforeControllerAction($controller, $action)
	{
		if(parent::beforeControllerAction($controller, $action))
		{
			// this method is called before any module controller action is performed
			// you may place customized code here
			return true;
		}
		else
			return false;
	}
}

   模块必须继承CWebModule(->CModule->CComponent)。类名是模块名首字母大写,后缀是Module。

   init()

   初始化模块,通过代码可以看到,可以用来导入其他模块的组件。主要完成模块的初始工作

   beforeControllerAction()

   afterControllerAction()

   用于在模块内的Controller,Action执行之前和执行之后进行相关的操作


   4.模块的配置,使用方法

    (1).配置文件/yii_dev/testwebap/protected/config/main.php

        'modules'=>array('testmod',),

        配置文件中也可以及添加对模块中属性初始化的参数例如:

        'modules'=>array('testmod'=>array('param'=>'param1'), 

   

<?php

class TestmodModule extends CWebModule
{
    public $param;
    

     

        对应的访问方式是:

        Yii::app()->controller->module->param;        

     (2).YII中的模块是非常灵活的,一个模块可以包含子模块。理论上,模块可以是无限嵌套。


  5.模块的路由

     在yii的路由章节已经说明了模块的路由格式。这里不再累述。

    

   


     

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值