声 明:本人 PHPer 菜鸟一枚,Zend Framework2 框架的菜菜鸟,刚学习 ZF2 不过 2 天。由于英语实在太破,所以一开始只能找网上 ZF2 中文教程,但很多教程都只说到 ZF2安装与配置就结束了,没有了下文。看来只能硬着头皮拿着字典一点点去看官方教程了,以下是我做的一些学习涂鸦,学习过程还是按照官方教程的顺序。才疏学浅,望大侠多多指教......谢谢。(来自于互联网....如果有疑问欢迎加入我的群:13768387)
---------------------------------------------------------------------------------------------------
说明:
(1)ZF2 并不向下兼容 ZF1。所以 ZF1 开发的项目无法在ZF2 中运行。
(2)我所使用的开发环境 Win7 + Xamppv.1.8.1,包含:Apache 2.4.3,PHP 5.4.7,MySQL 5.5.27
(3)DocumentRoot:e:Web
(4)e:Webzf2working是我建立的一个学习ZF2的目录,目的是与我其它的项目区分开
(5)Zend Framework2.2.1
一、ZendFramework是什么?
这个不多说了,Google 和 Baidu一大推。
官方的说明:http://framework.zend.com/about/
简要总结:
1、PHP Web 应用程序框架;
2、完全面向对象(OOP);
3、MVC(Model-View-Controller)开发模式;
4、使用 PHP5.3+ 新功能和函数;
5、松耦合组件;
6、强大的类库;
7、强大的技术支持(ZendTechnologies,PHPer 们几乎没人不知道Zend Technologies吧。);
二、Zend Framework 2安装环境要求
Apache:
1、打开 mod_rewrite 支持
(1)打开httpd.conf 文件
(2)找到#LoadModule rewrite_module modules/mod_rewrite.so这一行
(3)把这行左侧第一个字符(#)删除
(4)保存修改后的httpd.conf 文件并重启 Apache
2、支持.htaccess文件
要支持.htaccess 文件有两种方法
下面的操作假设ZF2 开发项目保存在 e:Webzf2working目录下
方法一:直接修改httpd.conf 文件
(1)、打开httpd.conf 文件
(2)、找到zf2working">段,如果没有可以全新手动添加
(3)、添加AllowOverride All 或者将原有的AllowOverride None 修改成AllowOverride All
(4)、保存修改后的httpd.conf 文件并重启 Apache
方法二:在httpd-vhosts.conf文件中修改
(1)打开httpd-vhosts.conf文件,该文件一般在“Apache安装路径/conf/extra/”目录下
(2)在文件底部手动添加以下信息
DocumentRoot"E:/Web/ZF2Working/zf2-tutorial/public"
ServerNamezf2-tutorial.localhost
#This should be omitted in the productionenvironment
SetEnvAPPLICATION_ENV development
DirectoryIndexindex.php
AllowOverrideAll
Orderallow,deny
Allowfrom all
以上代码详细说明将在后面ZF2环境配置中详细介绍,这里只要注意加粗部分就可以了。
(3)保存修改后的httpd-vhosts.conf 文件并重启Apache
PHP:
1、版本要在 5.3.x 以上(包含 5.3.x)
由于 ZF2 采用了 PHP5.3+中很多的特性和函数,例如:namespaces,latestatic binding,lambdafunctions and closures所以要求PHP 版本必须为 5.3 以上(含 5.3)
2、打开 openssl 支持(可选)
这个要说一下,在接下来的安装过程中会介绍两种安装方式:(1)在线安装;(2)手动安装,如果采用“在线安装”那么 openssl需要打开,不然安装会失败,如果是“手动安装”openssl 开不开就无所谓了。
(1)打开php.ini 文件
(2)找到;ex tension=php_openssl.dll这一行
(3)将这行左侧第一个字符(;)去掉
(4)保存修改过的php.ini 文件并重启 Apache
3、打开 PDO MySQL数据库支持(可选)
PHP默认是打开了 Sqlite 支持的,如果需要使用到 MySQL 就需要打开 PDO 的MySQL 数据库支持
(1)打开php.ini 文件
(2)找到;extension=php_pdo_mysql.dll这一行
(3)将这行左侧第一个字符(;)去掉
(4)保存修改过的php.ini 文件并重启 Apache
MySQL:
没有特别需求,如果项目不牵涉到数据库,MySQL甚至可以不装。也可以根据项目要求使用其它的数据库,例如:Sqlite 等。
三、安装Zend Framework 2
做完以上环境设置以后,本篇中最重要的部分来了!
ZF2有两种安装方式:一种是“在线安装”另一种是“手动安装”。
1、在线安装
所谓的“在线安装”就是使用托管在 github上的ZendSkeletonApplication (Skeleton在字典里解释为:骨架,骨骼。所以可以叫做“Zend应用程序骨架”或者可以理解为“Zend应用程序模板”)来构建我们自己的应用程序。
(1)在浏览器中打开https://github.com/zendframework/ZendSkeletonApplication
(2)点击图片右下角的 zip按钮(上图画红圈的按钮),下载ZendSkeletonApplication,下载的文件名类似ZendSkeletonApplication-master.zip。这就是我们构建自己应用程序的基础,也可以理解成我们应用程序的一个初始化的空白模板。
(3)将下载的压缩包解压,产生ZendSkeletonApplication-master文件夹。
(4)将ZendSkeletonApplication-master文件夹复制到e:Webzf2working目录下,形成e:Webzf2workingZendSkeletonApplication-master的结构。e:Webzf2working是我在学习ZF2时定义的一个目录,您可以根据项目的要求或自己的喜好修改目录,但这个目录必须可以被 Apache访问到。
(5)将ZendSkeletonApplication-master文件夹更名为您的项目名称,在这里我将ZendSkeletonApplication-master文件夹更名为:zf2-tutorial,既把e:Webzf2workingZendSkeletonApplication-master修改为e:Webzf2workingzf2-tutorial。最终我的目录结构如下图所示
有关虚拟主机的设置见下一个小节
(6)在 zf2-tutorial目录下有一个文件叫composer.phar 这就是在线安装的主要执行文件。打开dos窗口,切换到zf2-tutorial 目录执行 php composer.phar self-update命令,执行结果如下图
注意:由于要使用到 PHP 的命令行,所以要将 php.exe文件路径添加到系统的 PATH 里面,不然会报找不到 php.exe 错误
(7)当命令执行完成后接下来就是在线安装 ZF2了,在 zf2-tutorial 目录下执行php composer.phar install 命令,执行结果如下图
上图中有关“git”和"hg"报错的信息没有什么关系,不会影响到ZF2 的安装。
至此 ZF2 的“在线安装”全部结束。下面有几点做一个说明
(1)“在线安装”过程所花时间的长短取决于您当地的网络情况;
(2)ZendSkeletonApplication、composer和 Zend Framework 2 这三者之间是什么关系?ZendSkeletonApplication是 Zend 应用程序骨架(或者是 Zend 应用程序模板),ZendSkeletonApplication通过 composer 来解决依赖性的问题,而ZendSkeletonApplication所依赖的是 Zend Framework 2。
(3)php composer.phar self-update这个命令干了什么?该命令主要是检测ZendSkeletonApplication最新依赖性的检测和升级
(4)php composer.phar install这个命令干了什么?该命令装了 Zend Framework 2。这个命令在项目目录下的 vendor目录下安装了ZF2的库文件和一些辅助文件,同时在项目目录下添加了一个 composer.lock文件。
(5)php composer.phar install 报错“The process timedout.”怎么办?如果你得到以下结果
?12 | [RuntimeException]
Theprocess timed out. |
说明您的网速不给力,需要用以下命令
?1 | COMPOSER_PROCESS_TIMEOUT=5000 phpcomposer.phar install |
2、手动安装
“手动安装”和“在线安装”只是在最后一步不同,“手动安装”的最后一步不是用命令行方式下载ZF2,而是需要你手动将ZF2库添加到ZendSkeletonApplication目录中。
“手动安装”的前5步同“在线安装”的前5步
(6)下载ZF2,浏览器打开http://framework.zend.com/downloads/latest选择ZendFramework 2.2.1 Minimal
(7)解压ZendFramework-minimal-2.2.1.zip文件到项目目录里的 vendor 子目录下的 ZF2 子目录下。
至此 ZF2 的“手动安装”全部结束。
四、虚拟主机的设定与配置
这个虚拟主机是否需要配置看个人开发的习惯,一般来说有个虚拟主机相对来说开发比较方便。官方教程上是建立了一个zf2-tutorial.localhost 的虚拟主机,那我们也设定一个虚拟主机。
由于 ZF2 框架有一个唯一入口的脚本来接受外网的访问请求,既public/index.php。在我的例子中就是:e:Webzf2workingzf2-tutorialpublicindex.php,所以我要将e:Webzf2workingzf2-tutorialpublic作为虚拟主机的目录
(1)打开httpd-vhosts.conf文件,该文件一般在“Apache安装路径/conf/extra/”目录下
(2)在文件底部添加以下代码
?123456789101112 |
DocumentRoot "E:/Web/zf2Working/zf2-tutorial/public"
ServerNamezf2-tutorial.localhost
#This should be omitted in the productionenvironment
SetEnvAPPLICATION_ENV development
"E:/Web/ZF2Working/zf2-tutorial/public" >
DirectoryIndexindex.php
AllowOverrideAll
Orderallow,deny
Allowfrom all
<</code> /Directory> <</code> /VirtualHost> |
(3)保存httpd-vhosts.conf文件
(4)打开 hosts文件,该文件路径:C:WindowsSystem32driversetc
添加以下代码至文件底部
?1 | 127.0.0.1zf2-tutorial.localhost |
保存并退出 hosts 文件
(5)重启Apache
好了,ZF2的所有安装和配置全部结束,看看自己的成果吧
在浏览器中输入zf2-tutorial.localhost,如果可以看到以下页面,恭喜你!成功了,哇哈哈哈
五、测试 .htaccess文件
在浏览器中输入http://zf2-tutorial.localhost/1234 由于 1234 这个文件不存在,如果您的 .htaccess文件的设定是有效的话,应该可以看到如下的显示
如果您看到的是类似下图显示的标准 Apache 404错误。
那么您在继续教程之前必须修改 .htaccess文件。如果您使用的是 IIS + Rewrite 模式,按如下修改 .htaccess 文件
?12 | RewriteCond %{REQUEST_FILENAME}!-f RewriteRule ^.*$ index.php[NC,L] |
六、错误报告配置(可选)
还记得上文中在设定虚拟主机时添加的代码么?
?123456789101112 |
DocumentRoot "E:/Web/zf2Working/zf2-tutorial/public"
ServerNamezf2-tutorial.localhost
#This should be omitted in the productionenvironment
SetEnvAPPLICATION_ENV development
"E:/Web/ZF2Working/zf2-tutorial/public" >
DirectoryIndexindex.php
AllowOverrideAll
Orderallow,deny
Allowfrom all
<</code> /Directory> <</code> /VirtualHost> |
在代码中有一行
?1 | SetEnv APPLICATION_ENVdevelopment |
注意:项目正式上线之前要将这个模式删除,以免造成信息泄露和安全漏洞。
除了在虚拟主机的配置文件中设定开发模式之外,还需要在项目入口文件中做一点额外的设定。
打开e:webzf2workingzf2-tutorialpublicindex.php,默认的代码如下
?1234567891011121314151617 |