在一个MVC应用程序中,我们需要初始化建立数据库链接,配置视图和视图助手,配置布局,注册相关插件,注册action 助手等等,这些配置和准备工作我们都需要一一完成。有时候可能有一些初始化操作需要,但是在有些情况下这些初始化可能不需要。通过Zend_Application不仅仅可以完成这些操作,而且可以让这些配置和初始化工作更统一有序,重用性更高。
Zend_Application使用可以细分成三种:
Zend_Application:加载PHP环境,包括include_paths和自动加载,并实例化引导类。
Zend_Application_Bootstrap:提供引导类的接口。
Zend_Application_Bootstrap_Bootstrap完成大多数引导需要提供的通用功能,包括依赖性检查和按需加载引导资源。
Zend_Application_Resource提供资源按需加载功能
开发人员可以根据需要继承Zend_Application_Bootstrap_Bootstrap或实现Zend_Application_Bootstrap_Bootstrapper接口。在入口文件(例如,public/index.php)加载Zend_Application,并根据引导选项和当前环境配置实例化。
引导选项包括指定的引导类文件和引导类路径,选项具体如下:
所需要的include_paths
自动加载功能额外加载注册的命名空间
php.ini初始化设置
指定bootstrap类名,如果不是"Bootstrap"
资源的前缀键值对键表示资源前缀名称
资源的类名或者别名
附加加载的配置文件路径
附加的配置选项
选项可以是一个数组,或者Zend_Config对象,或者是指定位置的配置文件
引导程序
Zend_Application的第二个功能就是引导应用,Bootstraps 必须实现Zend_Application_Bootstrap_Bootstrapper接口, 具体接口API如下:
interface Zend_Application_Bootstrap_Bootstrapper { public function __construct($application); public function setOptions(array $options); public function getApplication(); public function getEnvironment(); public function getClassResources(); public function getClassResourceNames(); public function bootstrap($resource = null); public function run(); }
api主要提供了环境配置,获取引导加载的资源,以及引导程序
你可以实现接口或者继承Zend_Application_Bootstrap_BootstrapAbstract,或者Zend_Application_Bootstrap_Bootstrap.
资源方法
实现Zend_Application_Bootstrap_BootstrapAbstract接口的资源方法必须遵循如下规则. 方法类型是protected,方法的前缀必须是_init will开头.
如果要加载使用一个资源方法,在bootstrap()中添加资源名称即可,资源名称是资源方法去掉_init前缀。
如果要加载使用多个资源方法,可以通过数组指定。
例如 bootstrap class:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initFoo() { // ... } protected function _initBar() { // ... } protected function _initBaz() { // ... } }
只加载使用_initFoo() :
$bootstrap->bootstrap('foo');
加载使用 _initFoo() and _initBar() :
$bootstrap->bootstrap(array('foo', 'bar'));
加载使用全部资源方法,使用无参的bootstrap():
$bootstrap->bootstrap();
新建first_web项目
root@coder-671T-M:/mydev_src/zend_framework_learn/www# tree first_web/
first_web/
├── application
│ ├── Bootstrap.php
│ ├── configs
│ │ └── application.ini
│ ├── controllers
│ │ ├── ErrorController.php
│ │ └── IndexController.php
│ ├── models
│ └── views
│ ├── helpers
│ └── scripts
│ ├── error
│ │ └── error.phtml
│ └── index
│ └── index.phtml
├── docs
│ └── README.txt
├── library
├── public
│ └── index.php
└── tests
├── application
│ └── controllers
│ └── IndexControllerTest.php
├── bootstrap.php
├── library
└── phpunit.xml
16 directories, 11 files