Zend框架2入门(二) (转)
Zend框架2使用一个模块系统,和你组织内每个你的主应用程序特定代码
模块。骨架提供的应用程序模块是用于提供引导,错误和路由
配置到整个应用程序。它通常是用来提供应用水平控制器,比如说,应用程序的主页,但我们不会使用,因为我们希望在本教程中提供的默认
我们的相册列表的主页,将生活在我们自己的模块。
我们打算把所有的代码到相册模块将包含我们的控制器,模型形式和
意见。我们还需要一些配置文件。我们开始与所需的目录。
设置相册模块
从以下子目录下的所谓专辑举行的模块的文件创建一个目录:
zf2tutorial/
/modules
/Album
/configs
/src
/Album
/Controller
/Form
/Model
/views
正如你可以看到相册模块为单独的文件,我们会有不同类型的目录。
PHP文件包含专辑命名空间内的类生活,使我们可以在src/Album目录
我们的模块内有多个命名空间,我们应该访问(引用)它。
为了装载和配置模块,Zend框架2 ModuleManager。这将寻找
Module.php模块目录的根,并期望找到一类叫做Album\模块。
也就是说,在一个给定模块的类模块的名字命名空间,这是
模块的目录名称。
创建相册模块Module.php:
modules/Album/Module.php
<?php
namespaceAlbum;
useInvalidArgumentException,
Zend\Module\Manager,
Zend\Config\Config,
Zend\Loader\AutoloaderFactory;
classModule
{
publicfunction init(Manager $moduleManager)
{
$this->initAutoloader();
}
protectedfunction initAutoloader()
{
AutoloaderFactory::factory(array(
'Zend\Loader\ClassMapAutoloader'=> array(
__DIR__ .'/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader'=> array(
'namespaces'=> array(
__NAMESPACE__ => __DIR__ .'/src/'. __NAMESPACE__, ),
),
));
}
publicfunction getConfig($env =null)
{
$config =newConfig(include __DIR__ .'/configs/module.config.php');
if(null=== $env){
return $config;
}
if(!isset($config->{$env})){
thrownewInvalidArgumentException(sprintf(
'Unknown environment "%s" provided to "%s\\%s"',
$env,
__NAMESPACE__,
__METHOD__
));
}
return $config->{$env};
}
}
?>
ModuleManager会调用的init(),我们按照惯例,应配置此自动装载
模块。我们创建initAutoloader()为我们做的方法。
自动加载文件
我们使用ZF2的AutoloaderFactory添加一个classmap文件的ClassmapAutoloader同时这个
模块的命名空间,已为我们创造了在index.php StandardAutoloader。标准
自动加载请求需要一个命名空间和路径在哪里可以找到该命名空间的文件。它是PSR- 0
兼容等类的直接映射到每对PSR-0 rules1文件。
正如我们在发展,我们不需要通过classmap加载文件,所以我们提供了一个空数组给
classmap自动加载类。创建这些内容autoload_classmap.php:
modules/Album/autoload_classmap.php:
<?php
return array();
?>
由于这是一个空数组,每当自动加载类通过相册命名空间来查找一个类, 它会把我们退回到
这里StandardAutoloader。
配置
经注册的自动加载机,让我们在快看在Album\Module中的getConfig()。
这个方法实例化一个Zend\ Config中加载CONFIGS/ module.config.php文件。并抛出一个
如果配置错误,没有在指定的环境。然后我们回到正确的配置对象。
相册模块创建以下配置文件:
1 https://gist.github.com/1293323modules/Album/configs/module.config.php:
<?php
$default = array(
'di'=> array('instance'=> array(
'Zend\View\PhpRenderer'=> array(
'parameters'=> array(
'resolver'=>'Zend\View\TemplatePathStack',
'options'=> array(
'script_paths'=> array(
'Album'=> __DIR__ .'/../views',
),
),
),
),
)),
);
// published environments
$production = $default;
$staging = $default;
$testing = $default;
$development = $default;
$config = compact('production','staging','testing','development');
return $config;
?>
“DI”的配置参数是用于配置2 Zend框架的依赖注入容器。在这
在这种情况下,我们配置了 Zend\View\PhpRenderer 类来使用 Zend\View
\TemplatePathStack 类去寻找视图脚本和相册模块,这些脚本将在
我们的意见目录。
其余的文件设置的生产,运输,测试和开发环境,使我们可以
根据需要覆盖默认。我们将填写在“默认”配置,因为我们经过
教程。
通报新模块的应用程序
现在,我们需要告诉ModuleManager,这个新的模块存在。这是在应用程序的
CONFIGS/ application.config.php文件,它是由骨架应用程序提供。更新此文件,以便
其模块部分包含的相册模块,以及这样的文件,现在看起来像这样:
(I’ve bolded the change required)
configs/application.config.php:
<?php
returnnewZend\Config\Config(array(
'module_paths'=> array(
realpath(__DIR__ .'/../modules'),
),
'modules'=> array(
'Album',
'Application',
),
'module_manager_options'=> array(
'enable_config_cache' =>false,
'cache_dir' => realpath(__DIR__ .'/../data/cache'), 'enable_dependency_check' =>false,
'enable_auto_installation'=>false,
'manifest_dir' => realpath(__DIR__ .'/../data'),
),
));
?>
正如您所看到,在加载应用模块之前,我们已经加载了我们的相册模块。作为一种公约,
我们希望你能够安装第三方模块到你的应用中来覆盖他默认的配置来编写应用模块的配置文件。
现在我们已经建立好了模块准备把我们自定义的代码放到里面。
Zend框架2入门(二) (转)的更多相关文章
- Zend框架2入门(一) (转)
By Rob Allen, www.akrabat.com 修订0.1.2文件版权所有? 2011本教程的目的是给创建一个简单的数据库的介绍使用Zend Framework 2驱动的应用程序使用模型 ...
- 实体框架 (EF) 入门 => 二、在全新的数据库中使用 Code First
学习资料:http://msdn.microsoft.com/zh-cn/data/jj193542 视频建立的控制台应用程序,我在这里使用MVC. 一.非常有磁性的,非常优雅 很喜欢看这个人的视频, ...
- Mybatis框架基础入门(二)--架构简介
mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文件,文件中配置了操作数据库的 ...
- 【原创】NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示
前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty ...
- OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据
OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据 我们这片博文就来聊聊这个反响很不错的OkHttp了,标题是我恶搞的,本篇将着重详细的 ...
- (转)MyBatis框架的学习(二)——MyBatis架构与入门
http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: S ...
- 01-Spring Security框架学习--入门(二)
一.入门案例 Spring Security 自定义登录界面 通过之前的一节 01-Spring Security框架学习--入门(一)的简单演示,Spring security 使用框架自带的登录界 ...
- Veins(车载通信仿真框架)入门教程(二)——调用第三方库
Veins(车载通信仿真框架)入门教程(二)——调用第三方库 在借助Veins进行自己的研究时我们经常需要实现一些比较复杂的功能,有时就需要借助第三方库的帮助. 博主的研究需要使用神经网络,但是自己编 ...
- 小白学 Python 爬虫(34):爬虫框架 Scrapy 入门基础(二)
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
随机推荐
- 【转】 iOS开发UI篇—控制器的View的创建
最近对view的周期等还不是非常清楚,就找到顶哥的文章,非常不错,就搬运过来了. 原文: http://www.cnblogs.com/wendingding/p/3770760.html 一.6种创 ...
- javascript之typeof、constructor、instanceof
ref: http://jingyan.baidu.com/article/29697b912f9939ab20de3c8c.html
- POJ 2395 Out of Hay(最小生成树中的最大长度)
POJ 2395 Out of Hay 本题是要求最小生成树中的最大长度, 无向边,初始化es结构体时要加倍,别忘了init(n)并查集的初始化,同时要单独标记使用过的边数, 判断ans==n-1时, ...
- oracle行转列和列转行
目录[-] 一.行转列 1.1.初始测试数据 1.2. 如果需要实现如下的查询效果图: 1.3.延伸 二.列转行 1.1.初始测试数据 1.2. 如果需要实现如下的查询效果图: 一.行转列 1.1.初 ...
- 初学Javascript对象
<script> var p=new Object(); //属性 p.width=; p.height=; p.num=; p.autotime=; //方法 p.autoplay=fu ...
- Nginx源码研究六:NGINX的配置文件分析
上一篇写到nginx的各个模块的配置信息的存储结构,大体描述了对配置信息的配置项生成,定制,初始化过程.这里重点研究实现定制的过程,所谓实现定制,这里指的是,nginx系统提供使用者定义nginx的配 ...
- 畅谈Spring设计哲学
自己从学习编程开始到现在有一个习惯:一直喜欢把软件开发中的技术和思路放到实际生活中去类比考虑.自己平常也喜欢开一些关于软件哲学的书籍,事实证明这些书籍对自己的学习新技术很有很大的帮助.数学是一切学科的 ...
- IIS 内部运行机制及Asp.Net执行过程详解
一直以来对一个Asp.net页面穿过IIS后就返回给浏览器一个HTML页面感觉很是神奇.虽然做技术这么长时间了,也曾经大致了解过一点来龙去脉,但是如果你真的问起我比较详细的过程,我还真的回答不上来,好 ...
- Android ContentProvider 简介
当在系统中部署一个又一个Android应用之后,系统里将会包含多个Android应用,有时候就需要在小同的应用之问芡亭数据,比如现在有一个短信接收应用,用户想把接收到的陌生短信的发信人添加到联系人管理 ...
- SIM卡读卡器的研究与设计
SIM卡(Subscriber Identity Module).即用户识别模块,是一张符合GSM规范的"智慧卡".SIM卡可以插入任何一部符合GSM规范的移动电话中," ...