Zend 框架之 Zend_Application 之(三):举例说明

Bootstrap 类本身典型的内容不多;通常,它只是扩展 bootstrap 基类,而里面没有任何代码:

带有一个对应的配置文件:

      ; APPLICATION_PATH/configs/application.ini
      [production]
      autoloaderNamespaces[] = "My_"
      bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
      bootstrap.class = "Bootstrap"
      pluginpaths.My_Bootstrap_Resource = "My/Bootstrap/Resource"
      resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
       
      [testing : production]
      [development : production]

注意:自动加载器的命名空间

因为以下例子使用的是定制的代码,我们需要在我们的配置文件中为这些代码注册命名空间;这将通过 autoloaderNamespaces 配置键完成,它是一个数组。另外,为了保证定制的插件资源被找到,我们需要在 bootstrap 注册一个插件前缀路径。这将通过 pluginpaths 配置键做到,它是一个关联数组,其中的键名代表将要使用的前缀,值代表前缀的相对的路径。

然而,对初始化作必须的定制,你有两个选择。首先,你可以写一个以 _init 为前缀的方法,来指定将要引导的代码。这些方法将会被 bootstrap() 调用,也能被当作公共方法被调用:bootstrap()。它们可以接受一个可选的数组参数。

如果你的资源方法返回一下值,它会被保存在 bootstrap 内的一个容器中。这将会很有用,特别是需要和不同资源互动的时候(例如一个资源把它自己注入到另外一个资源)。getResource() 方法然后可以用来检索这些值。

下面的例子展示了一个初始化请求对象的资源方法。它使用了依赖性检查(它取决于前端控制器),从 bootstrap 捕获一个资源,然后返回一个值,保存到 bootstrap 中。

注意在这个例子中,bootstrap() 的调用;这将确保前端控制器在调用这个方法之前已经被初始化。这个调用可能触发一个资源或者这个类内的另外一个方法。

另外一个选择是使用资源插件。资源插件是担负特定初始化的对象,可以在以下情况下被指定:

  • 当实例化 Zend_Application 对象
  • bootstrap 对象初始化的过程中
  • 可以通过调用 bootstrap 对象的方法来明确指定它们

资源插件应用了 Zend_Application_Resource_ResourceAbstract 类,它简单的定义了它们允许调用者和选项注入,并且他们有一个 init() 方法。举例来说,一个定制的视图引导资源可能看起来是这样的:

为了告诉引导程序使用这个,你可能需要提供资源插件类的名字,或者一个插件加载器前缀路径和插件资源短名的组合(例如,“view”):

资源插件可以通过访问上一级 bootstrap 来调用其它的资源和初始化:

在普通用法中,你应该实例化应用程序,引导它,和运行它:

对于一个定制的脚本,你可能需要简单的初始化指定的资源:

不同于使用 bootstrap() 方法去调用内部方法或者资源,你可以使用重载:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章