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 ...
随机推荐
- asp.net 真正实现完全跨域单点登录
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. asp.ne ...
- hello,boke
我一名学习软件工程金融服务工程的学生,简单来说就是学习计算机类的,对于自己的介绍,从平时生活中来说吧,我一直处于一种很中规中矩的生活状态里,平时玩玩手机.追追剧.和室友一起去图书馆自习,考前拼命复习两 ...
- 3.题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
public static void main(String[] args) { Scanner scanner=new Scanner(System.in); ...
- 几种常见ECG数据格式及对比
SCP.DICOM.HL7aECG.GDF格式及对比 本文档首先给出SCP.DICOM.HL7aECG.GDF四种心电信号格式的具体数据结构,然后分析其各自的特点及适用范围. 一.SCP-ECG fo ...
- 【NOI2006】最大获利
[问题描述] 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU 集团旗下的CS&T 通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就 ...
- 如何遍历json属性和动态添加属性
var person= { name: 'zhangsan', pass: '123' , 'sni.ni' : 'sss', hello:function (){ for(var i=0;i< ...
- jquery 当前页导航高亮显示
<script type="text/javascript"> $(document).ready(function(){ var myNav = $("#n ...
- django+nginx+supervisor+gunicorn+gevent 网站部署
django+nginx+supervisor+gunicorn+gevent 网站部署 django,nginx,supervisor,gunicorn,gevent这几个都是在本领域大名鼎鼎的软件 ...
- 自定义jdbc框架
获取元数据 元数据- DataBaseMetaData DatabaseMetaData meta = con.getMetaData(); getDatabaseProductName().getD ...
- C++学习笔记7——模板
函数模板: #include <iostream> using namespace std; template <typename T> T max(const T & ...