有2种方法来开始 Zend_Application,这将取决你如何开始你的项目。无论是哪种方法,你总是以创建一个 Bootstrap 类,和一个相关的配置文件来开始的。
如果你计划使用 Zend_Tool 来创建你的项目,继续阅读。如果你想在一个已有项目中添加 Zend_Application,你可能需要跳把 Zend_Application 加入到你的项目 部分。
使用 Zend_Tool
开始使用 Zend_Application 的最快方式是使用 Zend_Tool 来生成你的项目。这将同时创建你的 Bootstrap 类和文件。
为了创建一个项目,执行以下 zf 命令(在 *nix 系统上):
% zf create project newproject
或者 Windows 上的 zf.bat 命令:
C:> zf.bat create project newproject
两者将会创建一下结构如下的项目:
newproject |-- application | |-- Bootstrap.php | |-- configs | | `-- application.ini | |-- controllers | | |-- ErrorController.php | | `-- IndexController.php | |-- models | `-- views | |-- helpers | `-- scripts | |-- error | | `-- error.phtml | `-- index | `-- index.phtml |-- library |-- public | `-- index.php `-- tests |-- application | `-- bootstrap.php |-- library | `-- bootstrap.php `-- phpunit.xml
在上面的结构中,你的 bootstrap 位于 newproject/application/Bootstrap.php,最初看起来像这样:
你会同时注意到一个配置文件,newproject/application/configs/application.ini,被创建了。它有以下的内容:
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
这个配置文件内的所有配置,将被 Zend_Application 和你的 bootstrap 使用。
另外一个有趣的文件是 newproject/public/index.php,它将唤起 Zend_Application 和分发它(Zend_Application)。
为了继续快速开始,请跳到添加和创建资源 部分。
把 Zend_Application 加入到你的项目
Zend_Application 的基本面是十分简单的:
- 创建一个 application/Bootstrap.php 文件,内容包括 Bootstrap 类
- 创建一个 application/configs/application.ini 配置文件,内容是关于 Zend_Application 所必需的基本配置
- 修改你的 public/index.php 来调用 Zend_Application
首先,创建你的 Bootstrap 类。创建一个文件,application/Bootstrap.php,带有以下内容:
现在,创建你的配置文件。具体到本教程,我们会使用一个 INI 风格的配置;你可以,当然,使用一个 XML 或者 PHP 风格的配置文件。创建 application/configs/application.ini 文件,文件内容如下:
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
现在,让我们修改你的入口文件,public/index.php。如果文件不存在,创建它;否则,用以下内容代换它:
你可能注意到了应用程序的环境常量正在等待一个“APPLICATION_EVN”的环境变量。我们建议在你的 web 服务器环境中设置这个值。在 Apache,你既可以在你的虚拟主机的配置中设置,也可以在你的 .htaccess 文件中设置。对于你的 public/.htaccess 文件,我们建议如下设置:
SetEnv APPLICATION_ENV development RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
注意:关于 mod_rewrite
上面的重写规则允许访问你的虚拟主机文档根目录中的任何文件。如果有任何你不想通过这种方式被访问的文件,你可能需要在你的重写规则中作出更严格的限制。访问 Apache 网站来学习更多关于 mod_rewrite 的相关知识。
到现在,你已经为开始更深利用 Zend_Application 全部准备好了。
添加和创建资源
如果你按照上述步骤做下来,那么你的 bootstrap 类将利用一个前端控制器(front controller),当它(bootstrap 类)运行的时候,它将分发这个前端控制器。然而,更可能的情况是,你还需要做更进一步的配置。
在这个部分,我们将会探讨为你的应用程序添加两个资源。首先,我们会建立你的模板(layout),然后我们将配置你的视图对象(view object)。
由 Zend_Application 提供的一个标准资源是“模板”(layout)资源。这个资源等待你来定义配置相关的值,然后它将利用这些值来配置你的 Zend_Layout 实例。
为了使用它,我们要做的只是更新配置文件。
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" ; ADD THE FOLLOWING LINES resources.layout.layout = "layout" resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
如果 application/layouts/scripts/ 这个目录不存在,创建它,然后在这个目录下创建 layout.phtml 文件。一个好的开始模板文件如下(将会和后面提到的视图资源紧密相关):
到现在为止,你会拥有一个运行正常的模板。
现在,我们将添加一个定制的视图资源。当初始化这个视图的时候,我们想设置 HTML 的 DocType 以及在 HTML 头部使用的一个默认 title 值。这可以通过编辑你的 Bootstrap 类,在这个类中添加一个方法来做到:
这个方法将会在你启动应用程序的时候被自动执行,而且确保你的视图根据你的应用程序的需要被初始化。
对 Zend_Application 进一步利用
以上应该会让你开始使用 Zend_Application 并且创建你的应用程序的 bootstrap。从现在开始,你应该开始创建资源的方法,或者,为了重用性的最大化,资源插件类。继续阅读以学习更多。