程序员人生 网站导航

Zend Framework教程-Zend_Application_Module-Zend Framework 多模块支持

栏目:ZendFramework时间:2013-10-10 19:11:56


用zend studio或者zf命令创建module_demo1项目。执行如下命令,添加user,blog,picture模块。



/www/module_demo1>zf create module userCreating the following module and artifacts:/www/module_demo1/application/modules/user/controllers/www/module_demo1/application/modules/user/models/www/module_demo1/application/modules/user/views/www/module_demo1/application/modules/user/views/scripts/www/module_demo1/application/modules/user/views/helpers/www/module_demo1/application/modules/user/views/filtersAdded a key for path module directory to the application.ini fileUpdating project profile '/www/module_demo1/.zfproject.xml'/www/module_demo1>zf create module blogCreating the following module and artifacts:/www/module_demo1/application/modules/blog/controllers/www/module_demo1/application/modules/blog/models/www/module_demo1/application/modules/blog/views/www/module_demo1/application/modules/blog/views/scripts/www/module_demo1/application/modules/blog/views/helpers/www/module_demo1/application/modules/blog/views/filtersAdded a key for path module directory to the application.ini fileUpdating project profile '/www/module_demo1/.zfproject.xml'/www/module_demo1>zf create module pictureCreating the following module and artifacts:/www/module_demo1/application/modules/picture/controllers/www/module_demo1/application/modules/picture/models/www/module_demo1/application/modules/picture/views/www/module_demo1/application/modules/picture/views/scripts/www/module_demo1/application/modules/picture/views/helpers/www/module_demo1/application/modules/picture/views/filtersAdded a key for path module directory to the application.ini fileUpdating project profile '/www/module_demo1/.zfproject.xml'




我们创建了user,blog,picture三个模块。项目结构如下:

│  .buildpath│  .project│  .zfproject.xml│├─.settings│      .jsdtscope│      org.eclipse.php.core.prefs│      org.eclipse.wst.jsdt.ui.superType.container│      org.eclipse.wst.jsdt.ui.superType.name│├─application│  │  Bootstrap.php│  ││  ├─configs│  │      application.ini│  ││  ├─controllers│  │      ErrorController.php│  │      IndexController.php│  ││  ├─models│  ├─modules│  │  ├─blog│  │  │  ├─controllers│  │  │  ├─models│  │  │  └─views│  │  │      ├─filters│  │  │      ├─helpers│  │  │      └─scripts│  │  ├─picture│  │  │  ├─controllers│  │  │  ├─models│  │  │  └─views│  │  │      ├─filters│  │  │      ├─helpers│  │  │      └─scripts│  │  └─user│  │      ├─controllers│  │      ├─models│  │      └─views│  │          ├─filters│  │          ├─helpers│  │          └─scripts│  └─views│      ├─helpers│      └─scripts│          ├─error│          │      error.phtml│          ││          └─index│                  index.phtml│├─docs│      README.txt│├─library├─public│      .htaccess│      index.php│└─tests   │  bootstrap.php   │  phpunit.xml   │   ├─application   │  └─controllers   │          IndexControllerTest.php   │   └─library



执行如下命令,创建为各个模块创建一个IndexController。
/www/module_demo1> zf create controller user index-action-included[=1] user
/www/module_demo1> zf create controller index index-action-included[=1] blog
/www/module_demo1> zf create controller index index-action-included[=1] picture


结构如下:


│  │      application.ini│  ││  ├─controllers│  │      ErrorController.php│  │      IndexController.php│  ││  ├─models│  ├─modules│  │  ├─blog│  │  │  ├─controllers│  │  │  │      IndexController.php│  │  │  ││  │  │  ├─models│  │  │  └─views│  │  │      ├─filters│  │  │      ├─helpers│  │  │      └─scripts│  │  │          └─index│  │  │                  index.phtml│  │  ││  │  ├─picture│  │  │  ├─controllers│  │  │  │      IndexController.php│  │  │  ││  │  │  ├─models│  │  │  └─views│  │  │      ├─filters│  │  │      ├─helpers│  │  │      └─scripts│  │  │          └─index│  │  │                  index.phtml│  │  ││  │  └─user│  │      ├─controllers│  │      │      UserController.php│  │      ││  │      ├─models│  │      └─views│  │          ├─filters│  │          ├─helpers│  │          └─scripts│  │              └─index│  │                      index.phtml│  ││  └─views│      ├─helpers│      └─scripts│          ├─error│          │      error.phtml│          ││          └─index│                  index.phtml│├─docs




模块的Controller的结构如下:
以/module_demo1/application/modules/blog/controllers/IndexController.php为例
类名为模块名称_控制器名称即:Blog_IndexController。如下:
<?phpclass Blog_IndexController extends Zend_Controller_Action{    public function init()    {        /* Initialize action controller here */    }    public function indexAction()    {        // action body    }}



这样,一个简单的模块就创建完成了。

可以通过访问

http://www.localzend.com/module_demo1/public/blog/index/index

来访问blog模块的index控制器的index Action。



多模块的Model支持


以user模块为例。

│  │  ││  │  └─user│  │      │  Bootstrap.php│  │      ││  │      ├─controllers│  │      │      IndexController.php│  │      ││  │      ├─models│  │      │      MUser.php│  │      ││  │      └─views│  │          ├─filters│  │          ├─helpers│  │          └─scripts│  │              └─index│  │                      index.phtml


/module_demo1/application/modules/user/models/MUser.php

在user模块的models新建一个MUser.php文件。内容规则如下:


<?phpclass  User_Model_MUser {		public function getUserById() {		return array (				'username' => 'zhangsan',				'id' => '1' 		);	}}

格式要求如下:

模块名_Model_模型类名


调用方法如下:

<?phpclass User_IndexController extends Zend_Controller_Action{	private $_user = null;    public function init()    {       $this->_user = new User_Model_MUser();       /* Initialize action controller here */    }    public function indexAction()    {        $this->view->assign('user',$this->_user->getUserById());    }}


/module_demo1/application/modules/user/views/scripts/index/index.phtml


<br /><br /><div id="view-content">	<p>View script for controller <b>Index</b> and script/action name <b>index</b></p>	<p>		<?php 		var_dump($this->user);		?>	</p></div>



总结:实现zend framework支持多模块的方法如下:


1.配置文件

/module_demo1/application/configs/application.ini


[production]phpSettings.display_startup_errors = 1phpSettings.display_errors = 1includePaths.library = APPLICATION_PATH "/../library"bootstrap.path = APPLICATION_PATH "/Bootstrap.php"bootstrap.class = "Bootstrap"appnamespace = "Application"resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"resources.frontController.params.displayExceptions = 1resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"resources.modules[] =[staging : production]

重要的两行

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"resources.modules[] =


2.各模块放在配置文件中指定的模块存放目录。默认是/module_demo1/application/modules


3.各模块的基本结构如下:

│  │  │
│  │  └─user
│  │      │  Bootstrap.php
│  │      │
│  │      ├─controllers
│  │      │      IndexController.php
│  │      │
│  │      ├─models
│  │      │      MUser.php
│  │      │
│  │      └─views
│  │          ├─filters
│  │          ├─helpers
│  │          └─scripts
│  │              └─index
│  │                      index.phtml


4.模块的Bootstrap.php内容如下:

<?phpclass User_Bootstrap extends Zend_Application_Module_Bootstrap {	}

5.各模块的models用来存放模型

模型的定义如下

模块名_Model_模型类名

6.控制器的定义如下:

<?phpclass User_IndexController extends Zend_Controller_Action{	private $_user = null;    public function init()    {       $this->_user = new User_Model_MUser();       /* Initialize action controller here */    }    public function indexAction()    {        $this->view->assign('user',$this->_user->getUserById());    }}

模块名_控制器名称Contrller

 

7.调用模型。只需按照模型定义的类名使用即可。






------分隔线----------------------------
------分隔线----------------------------

最新技术推荐