`

Zend 框架之 Zend_Application 之(四):核心功能

 
阅读更多

在这里你可以找到关于 Zend_Application 全部核心组件的 API 文档说明。

Zend_Application

Zend_Application 为组件提供了基本的功能,和进入你的应用程序的入口点。它的功能有两部分:建立 PHP 环境(包括自动加载),同时执行你的应用程序的 bootstrap。

典型的,你将传递所有的配置给 Zend_Application 的构造函数,但你也可以使用它的方法来完全配置对象。下面的指导说明展示这两种用法。

Zend_Application 选项
选项 描述
phpSettings 将要使用到的 php.ini 设置数组。键名应该是 php.ini 键
includePaths 额外的路径,用来预装在 indclude_path 前面。应该是一个路径数组。
autoloaderNamespaces 额外的命名空间数组,用来注册到 Zend_Loader_Autoloader 实例。
bootstrap 关于应用程序引导类的到 bootstrap 类的路径字符串,或者一个带有 path 和 class 元素的数组

注意:选项名字

请注意选项名字不区分大小写。

Zend_Application 方法
方法 返回值 参数 描述
__construct($environment, $options = null) Void
  • $environment:必要参数。表示当前应用程序环境的字符串。典型的字符串可能包括:development,testing,qa,或者 production,但是会根据你的组织要求来定义。
  • $options:可选参数。参数可能是下面中的一个值:
    • 字符串:到 Zend_Config 文件的路径,这个文件被用作你的应用程序配置加载。$environment 会被用来确定配置的哪个部分被会被调用(development 或 production 或是其它)。
      对于1.10版本,你也可以传递包含配置文件的多个路径来合并成一个单独的配置。这将有助于减少许多享有通用配置(例如对 HTTP、或者 CLI 的配置,每个都分享一些特性,但是对于其它的设置,它们有各自不同的值)领域的重复配置,或者把一个长的配置文件分离成许多更小的目录文件。这种情况下的参数是带有一个单独的“configs”键名的数组,其中 configs 的值是将要合并的文件数组。注意:这意味着你既可以传递一个字面上的路径,或者array("configs"=>array("/path1", "/path2" [,...]));
    • 数组:关于你的应用程序的设置数据的关联数组。
    • Zend_Config:配置对象实例。
构造函数:参数正如描述的,将被用来设置对象的初始状态。在实例化过程中,一个 Zend_Loader_Autoloader 实例被注册了。传递给构造函数的选项值会传递给 setOptions()。
getEnvironment() 字符串 N/A 检索传递给构造函数的环境字符串
getAutoloader() Zend_Loader_Autoloader N/A 检索在实例化过程中注册的 Zend_Loader_Autoloader 实例。
setOptions(array $options) Zend_Application
  • $options:必需。一个应用程序的选项数组。
    全部的选项将会保存在内部,多次调用方法,将会合并选项。和大量 setter 方法匹配的选项将会传递给这些方法。例如,phpSettings 选项将会传递给 setPhpSettings() 方法。(选项名字不区分大小写)
    getOptions() 数组 N/A 检索全部用于初始化对象的选项;可以在请求之间用来把 Zend_Config 选项缓存到一个序列化格式
    hasOption($key) 布尔值
    • $key:将要查找的选项的键名字符串
    确定一个带有指定键名的选项是否已经被注册。键名不区分大小写。
    getOption($key) 混合
    • $key:将要查找的选项的键名字符串
    检索一个给定键名的选项值。如果键名不存在,返回 NULL。
    setPhpSettings(array $settings, $prefix = '') Zend_Application
    • $settings:必须。PHP INI 设置的关联数组。
    • $prefix:可选。将要前置在选项键名前面的字符串。用于内部来允许映射成对的数组到用点分离的 php.ini 键名。一般用说,应该永远不要由一个用户传递这个参数。
    设置运行时的 php.ini 配置。以点分离的设置可能按照等级组织(这可能和 INI Zend_Config 一起发生)通过一个数组的数组,而且依然能被正确解析。
    setAutoloaderNamespaces(array $namespaces) Zend_Application
    • $namespaces:必须。代表用 Zend_Loader_Autoloader 实例注册的命名空间字符串数组。
    使用 Zend_Loader_Autoloader 实例注册的命名空间。
    setBootstrap($path, $class = null) Zend_Application
    • $path:必须。可以是一个 Zend_Application_Bootstrap_Bootstrapper 实例,一个到 bootstrap 类的路径字符串,一个“类名=>文件名”的关联数组,或者一个带有“class”和“path”键名的关联数组。
    • $class:可选。如果 $path 是一个字符串,$class 可以被指定,而且应该是一个由路径指示的文件中含有的类的类名的字符串。
    getBootstrap() NULL | Zend_Application_Bootstrap_Bootstrapper N/A 检索已经注册的 bootstrap 实例
    bootstrap() Void N/A 调用 bootstrap 的 bootstrap() 方法来引导应用程序
    run() Void N/A 调用 bootstrap 的 run 方法来分发应用程序。

    Zend_Application_Bootstrap_Bootstrapper

    Zend_Application_Bootstrap_Bootstrapper 是所有的引导类必须应用的基本接口。它的基本功能以配置为目标,鉴别资源,引导(既可以是单独的资源也可以是整个应用程序),然后分发应用程序。

    以下的方法建立起了这个接口的定义。

    Zend_Application_Bootstrap_Bootstrapper 接口
    方法 返回值 参数 描述
    __construct($application) Void
    • $appliation:必须。应该接受一个 Zend_Application 或者一个 Zend_Application_Bootstrap_Bootstrapper 对象作为唯一的参数。
    构造函数。接受一个单独的参数,这个参数应该是一个 Zend_Application 对象,或者另外一个 bootstrap 对象。
    SetOptions(array $options) Zend_Application_Bootstrap_Bootstrapper
    • $options:必须。需要设置的选项数组。
    典型的,任何一个和 setter 匹配的选项将会唤起那个 setter;否则,选项将只会简单被保存,以便稍后的检索。
    getApplication() Zend_Application | Zend_Application_Bootstrap_Bootstrapper N/A 检索通过构造函数传递的应用程序或者 bootstrap 对象。
    getApplication() 字符串 N/A 检索父级应用程序或者引导对象中注册的环境字符串。
    getClassResources() 数组 N/A 检索在类中已经定义好的可用资源初始器的名字清单。这个可能与实现相关。
    bootstrap($resource = null) 混合
    • $resource:可选。
    如果 $resource 是空的话,将执行所有的 bootstrap 资源。如果是一个字符串,执行那个单独的资源;如果是一个数组,执行数组中的每一个资源。
    run() Void N/A 定义引导之后,需要运行的应用程序逻辑。

    Zend_Application_Bootstrap_ResourceBootstrapper

    Zend_Application_Bootstrap_ResourceBootstrapper 是加载外部资源的引导类将要应用的一个接口 ―― 例如,一个或者多个不会在类里面直接定义的资源,而是通过插件定义。它应该和 Zend_Application_Bootstrap_Bootstrapper 结合使用;Zend_Application_Bootstrap_BootstrapAbstract 应用了这个接口。

    以下方法组成了这个接口的定义。

    Zend_Application_Bootstrap_ResourceBootstrapper
    方法 返回值 参数 描述
    registerPluginResource($resource, $options = null) Zend_Application_Bootstrap_ResourceBootstrapper
    • $resource : 必须 . 一个资源的名字或者 Zend_Application_Resource_Resource 对象

    • $options : 可选 . 一个数组或者 Zend_Config 对象,用来传递给寝化的资源

    注册一个资源到类,提供可选的配置传递给这个资源

    unregisterPluginResource($resource) Zend_Application_Bootstrap_ResourceBootstrapper
    • $resource : 必须 . 从类中取消注册的资源名字

    从类中移除一个插件资源

    hasPluginResource($resource) Boolean
    • $resource : 必须 . 资源的名字

    确定一个指定的资源是否已经注册到类中

    getPluginResource($resource) Zend_Application_Resource_Resource
    • $resource : 必须 . 将要检索的资源名字(字符串)

    通过名字检索一个资源插件实例

    getPluginResourceNames() Array N/A

    检索已经注册的全部插件资源名字的清单

    setPluginLoader(Zend_Loader_PluginLoader_Interface $loader) Zend_Application_Bootstrap_ResourceBootstrapper
    • $loader : 必须 . 当解析插件名字到类,将要使用的插件加载器实例

    注册一个插件加载器实例,当解析插件类和名字的时候,将会使用它

    getPluginLoader() Zend_Loader_PluginLoader_Interface N/A

    检索已经注册的插件加载器


    Zend_Application_Bootstrap_BootstrapAbstract

    Zend_Application_Bootstrap_BootstrapAbstract 是一个抽象类,它为一个普通的引导类提供了基本的功能。它同时应用了 Zend_Application_Bootstrap_Bootstrapper 和 Zend_Application_Bootstrap_ResourceBootstrapper 这两个接口。

    方法返回值参数描述
    Zend_Application_Bootstrap_BootstrapAbstract 方法
    __construct($application) Void
    • $application : 必须 。 接受一个 Zend_Application 或者 Zend_Application_Bootstrap_Bootstrapper 对象作为单独的一个参数

    构造函数。接受一个单独的参数,它应该是一个 Zend_Application 对象,或者另外一个引导对象。

    setOptions(array $options) Zend_Application_Bootstrap_Bootstrapper
    • $options : 必须 。 需要设置的选项数组

    任何一个有匹配 setter 的选项,将会唤起那个 setter;否则,选项会被简单保存,以便将来检索。例如,如果你继承类,定义一个 setFoo() 方法,选项 foo 将会把值传递给那个方法。

    另外两件事情,也可以使用特殊选项键。pluginPaths 可以用来指定插件资源的路径前缀;它应该是一个数组,类前缀到文件路径的数组。resources 可以用来指定将要使用的插件资源,它应该是:插件资源到实例选项的关联数组。

    getOptions() Array N/A

    返回通过 setOptions() 注册的全部选项

    hasOption($key) Boolean
    • $key : 必须 。 需要检测的选项键

    确定一个选项键是否存在

    getOption($key) Mixed
    • $key : 必须 。 需要检索的选项键

    检索和一个选项键相关联的值,如果该键没有注册选项则返回 NULL

    setApplication(Zend_Application | Zend_Application_Bootstrap_Bootstrapper $application) Zend_Application_Bootstrap_BootstrapAbstract
    • $application : 必须

    注册父级应用程序或者引导对象

    getApplication() Zend_Application | Zend_Application_Bootstrap_Bootstrapper N/A

    检索通过构造函数传递的应用程序或者引导对象

    getEnvironment() String N/A

    检索和父级应用程序或者引导对象一起注册的环境字符串

    getClassResources() Array N/A

    检索可用的在类中定义的资源初始器名字清单。这可能是与接口相关。

    getContainer() Object N/A

    检索储存资源的容器。如果现在没有注册容器,它将在运行之前注册一个 Zend_Registry 实例

    setContainer($container) Zend_Application_Bootstrap_BootstrapAbstract
    • $container , 必须 。 储存资源的一个对象

    提供一个容器,用来储存资源。当一个资源方法或者插件返回一个值,它将被储存在这个容器中,以便将来检索

    hasResource($name) Boolean
    • $name , 必须 。 需要检查的资源名字

    当一个资源方法或者插件返回一个值,它将被储存在资源容器(查看 getContainer()setContainer() )。这个方法将会指示那个资源是否被设置一个值

    getResource($name) Mixed
    • $name , 必须 。 被捕捉的资源名字

    当一个资源方法或者插件返回一个值,它将被保存在资源容器中(查看 getContainer()setContainer() )这个方法将从容器中检索一个资源

    bootstrap($resource = null) Mixed
    • $resource : optional .

    如果 $resource 是空的,执行全部的引导资源。如果是一个字符串,单独执行这个资源;如果是一个数组,执行数组中的每一个资源

    这个方法可以用来运行在引导类中定义的资源方法或者通过资源插件类注册的资源。如果资源方法和资源插件有命名冲突,将优先执行在类中定义的资源方法

    run() Void N/A

    定义启动以后将要运行的应用程序逻辑

    __call($method, $args) Mixed
    • $method : 必须 。 将要调用的方法名字

    • $args : 必须 。 在调用方法过程中使用的参数数组

    提供了这样一种机制:允许你调用 bootstrap<ResourceName>() 而不是使用 bootstrap() 方法来引导单独的资源


    Zend_Application_Bootstrap_Bootstrap

    Zend_Application_Bootstrap_Bootstrap 是一个应用了 Zend_Application_Bootstrap_BootstapAbstract 的类。它的主要特点是它注册了前端控制器资源,同时 run() 方法首先检查一个默认的模块已经被定义,然后分发这个前端控制器。

    在多数个案中,你会希望继承这个类,出于你的引导需求考虑,或者简单的使用这个类,提供一个将要利用的资源插件清单。

    开启应用程序自动加载

    另外,这个引导接口提供了指定 namespace 或者资源位于它的树类前缀,将会开启大量应用程序资源的自动加载;实际上,它实例化了一个 Zend_Application_Module_Autoloader 对象,提供了被要求的命名空间和引导类的目录作为参数。你可以开启这个功能,通过提供一个命名空间到 appnamespace 配置选项。以下是一个 INI 例子:

    appnamespace = "Application"

    或者是 XML:

    Application

    默认的,Zend_Tool 会开启这个选项,使用 Application 这个值。

    另外,你可以简单的定义你的引导类的 $_appNamespace 属性:

    Zend_Application_Resource_Resource

    Zend_Application_Resource_Resource 是一个接口类,用于插件资源使用 bootstrap 类,这个 bootstrap 类应用了 Zend_Application_ResourceBootstrapper 接口。资源插件被期待允许配置,引导,应用一个策略模式来初始化资源。

    Zend_Application_Resource_Resource Interface
    方法 返回值 参数 描述
    __construct($options = null) Void
    • $options : optional . 用于设置资源状态的选项

    构造函数应该允许传递用于初始化状态设置的选项

    setBootstrap(Zend_Application_Bootstrap_Bootstrapper $bootstrap) Zend_Application_Resource_Resource
    • $bootstrap : required . 初始化这个资源的父级引导程序

    应该允许注册父级引导程序对象

    getBootstrap() Zend_Application_Bootstrap_Bootstrapper N/A

    检索已经注册的引导程序实例

    setOptions(array $options) Zend_Application_Resource_Resource
    • $options : 必须 . 用于设置状态的选项

    设置资源状态

    getOptions() Array N/A

    检索已经注册的选项

    init() Mixed N/A

    策略模式:运行资源的初始化


    Zend_Application_Resource_ResourceAbstract

    Zend_Application_Resource_ResourceAbstract 是一个应用了 Zend_Application_Resource_Resource 接口的抽象类,它是创建你自己定制插件资源的一个好的开始点。

    注意:这个抽象类没有应用 init() 方法;这将交由这个类的子类来定义。

    Zend_Application_Resource_ResourceAbstract 方法
    方法 返回值 参数 描述
    __construct($options = null) Void
    • $options : 可选 . 用于设置资源状态的选项

    构造函数应该允许传递用于状态初始化的选项

    setBootstrap(Zend_Application_Bootstrap_Bootstrapper $bootstrap) Zend_Application_Resource_ResourceAbstract
    • $bootstrap : 必须 . 初始化这个资源的父级引导程序

    应该允许注册父级引导程序对象

    getBootstrap() Zend_Application_Bootstrap_Bootstrapper N/A

    检索已经注册的引导程序实例

    setOptions(array $options) Zend_Application_Resource_ResourceAbstract
    • $options : 必须 . 用来设置状态的选项

    设置资源状态

    getOptions() Array N/A

    检索已经注册的选项


    资源名字

    当注册资源插件的时候,随之而来的一个问题是你如何从父级引导类引用这些资源。有三种不同的机制可以使用,这将取决你如何配置你的引导程序以及它的插件资源。

    首先,如果你的插件被定义在一个已经定义好的前缀路径,你可以通过它们的“短名”来引用它们 —— 也就是说,在类名前缀后面的部分。举例说明,Zend_Application_Resource_View 这个类可以被简单的用 View 来引用,因为 Zend_Application_Resource 这个前缀路径已经被注册了。你可以使用类的全名或者短名来引用它们:

    在每一个例子中,你可以然后引导这个资源,然后使用以下短名来检索它:

    其次,如果没有匹配的插件路径被定义,你仍然可以把类的全名传递这个资源。在这种情况下,你可以使用资源的类全名来引用它:

    显然,这会使得引用资源变得很累赘

    这时候第三种选择出现了。你可以指定一个精确的名字,指定的资源类将会以这个名字注册。这可以通过增加一个公共 $_explicitType 属性给资源插件类,通过一个字符串值,这个值将使用,无论何时,你想通过引导程序引用这个插件资源。举例说明,让我们定义我们自己的视图类:

    我们然后可以引导这个资源或者通过 My_View 这个名字检索它:

    使用这些命名手段,你可以重写现存的资源,添加你自己的,混合多种资源来达到复杂的初始化,以及做更多事情。

    分享到:
    评论

    相关推荐

      Zend Framework教程之Zend_Layout布局助手详解

      本文实例讲述了Zend Framework教程之Zend_Layout布局助手。分享给大家供大家参考,具体如下: 一、作用 布局的作用和模版的作用类似。可以认为是把网站通用、公共的部分拿出来作为通用的页面框架。例如一个基本的web...

      zf-doctrine, 一个Zend框架 1.x 和 Doctrine 1.2集成.zip

      zf-doctrine, 一个Zend框架 1.x 和 Doctrine 1.2集成 Doctrine 1与 Zend 框架集成项目试图提供 Doctrine 1与 Zend ... 以下组件属于这里集成:Zend_Application资源Zend框架模块项目支持用于 Doctrine 模型生成,迁移

      Zend-Framework-Ajax-Login:这是 Zend Framework 的基本安装,有几种不同的登录方式

      Zend 框架 Ajax 登录 这是一个基本的 ZF 安装,带有使用 ajax、重定向或弹出窗口登录的框架。 它使用 Zend_Auth 和 Zend_Auth_Adapters,因此很容易扩展。 这受到启发并使用了以下代码 使用 Chris Bisnett My_...

      Zend Framework 2 Documentation Release 2.4.8

      Zend Framework 2 Documentation Release 2.4.8 1 Overview 2 Installation 2.1 Using Composer 2.2 Using Git submodules 2.3 Web Server Setup 3 Getting Started with Zend Framework 2 3.1 Some ...

      Zend_Gearman:发送 Gearman 工人

      齿轮人该项目允许利用齿轮工作人员,就像 Zend 框架中的控制器一样。 源代码中包含一个快速入门,可帮助您快速上手。Gearman_Worker 的快速示例此代码属于 application/workers 并命名为 DemoWorker.php,类名为 ...

      restful-zend-framework:流行的 Zend 框架的扩展,允许轻松创建 RESTful 控制器和构建 API 端点

      使用 Zend 框架的 RESTful 应用程序Zend Framework 的这个扩展允许轻松创建 RESTful 控制器。 请记住,这些说明是通用的,您可能应该自定义代码以满足您的需要。 有关工作示例,请参阅假设您正在构建混合应用程序...

      Zend Framework教程之MVC框架的Controller用法分析

      本文讲述了Zend Framework教程之MVC框架的Controller用法。分享给大家供大家参考,具体如下: 这里简单讲讲MVC模式中Controller的基本使用方法。 基本使用实例: root@coder-671T-M:/...

      GtnPersistZendDb:GtnPersistBase 的 Zend\Db 实现

      Zend 框架 2 安装 通过 composer 或者简单地将这个项目克隆到你的./vendor/目录并在你的./config/application.config.php文件中启用它。 提供的类和接口 GtnPersistZendDb\Infrastructure\ZendDb\Repository - Zend\...

      ZendFramework-3

      这是一个使用Zend Framework MVC层和模块系统的框架应用程序。 该应用程序旨在作为希望使用Zend Framework入门的人的入门场所。 使用Composer安装 创建新的Zend Framework项目的最简单方法是使用 。 如果尚未安装,...

      harmonyos2-CsnCms:ZendFramework2CMS系统

      Zend 框架 2 模块 什么是 CsnCms? CsnCms 是一个基于DoctrineORMModule 、 CsnUser认证和CsnAuthorization的内容管理系统模块。 CsnCms 究竟是做什么的? CsnCms 是出于教育目的而创建的,以演示如何完成 CMS。 它...

      silex-zend-cache-provider:Zend Cache 库的 Silex 服务提供者

      这是一个准备将 Zend\Cache 库集成到 Silex 框架中的服务提供者。 安装 将以下依赖项添加到项目的composer.json文件中: { " require " : { " devsdmf/silex-zend-cache-provider " : " 1.1.0 " } } 用法 use ...

      SxBlog:zend框架2的简单博客模块

      博客 这是一个非常简单的博客模块。 对于那些有简单愿望的人来说就足够了。 安装 ...在config/application.config.php启用新添加的模块 &lt;?php return array ( 'modules' =&gt; array ( /* ... */

      zf-maintenance:Zend Framework 2 的维护模块

      Juliangut Zend 框架维护模块Zend Framework 2 的维护模块。安装安装的最佳方法是使用 : php composer.phar require juliangut/zf-maintenance或者直接从 github 下载并将其放在应用程序的module/目录中。 将Jgut\...

      FrontZend:由 Zend 框架提供支持的 CMS

      FrontZend FrontZend 是一个专注于可用性开发的内容管理系统,旨在使开发人员和用户的工作更轻松、更直观和完全灵活,提高生产力并使创建和... 然后复制 application/configs/local-dist.ini 文件,将其重命名为 local

      HtProfileImage:Zend Framework 2 的 ZfcUser 扩展,它添加了用户头像功能

      Zend 框架 2 模块,为 ZfcUser 添加了个人资料图片上传功能 要求 特征 当用户没有上传他的图像​​时,将 Gravatar 设置为替代方案 当用户没有上传他的图像​​时设置性别明智的默认图像 用于存储的调整大小选项 ...

      Yod 框架 v1.3.1

      - 使用 zend_call_function 代替 call_user_function - 废除 Yod_Request 类中的 errorAction 和 error404 方法 - 在配置中增加对 tpldata 和 plugins 的支持 - 在 Yod_Controller、Yod_Model 和 Yod_Application...

      HumusMvc:HumusMvc在ZF1应用程序中集成了Zend Framework 2的ModuleManager和ServiceManager

      将不再使用Zend_Application。 依存关系 任何类似于应用程序 安装 通常,您将在HumusMvcSkeletonApplication中安装HumusMvc。 如果要执行这些步骤,请查看HumusMvcSkeletonApplication的安装说明。 但是,您可以...

      Yod Framework开发框架最新官方版

      yod_application_autoload 中使用PHP命名空间的一个BUG- 修改了常量 YOD_EXTPATH 的默认值- 修改 Yod_Application 中的 autoload、plugin 和 import 方法- 修正了 yod_init_compile_file 中的一个BUG (支持 zend_...

      128uu酒店分销预订系统 PHP版 v2.1.zip

      并采用国外最先进的ZEND框架,具备极强的扩展性,便于后续各类优秀功能的加入,打造个性化在线酒店预订网站。 2.采用了新版API接口,为后续提供更有竞争力的酒店数据及价格打下良好基础,让网站更具价值。 3.酒店...

      EdpGithub:Zend Framework 2的Github API集成模块

      适用于ZF2的Github Api模块介绍EdpGithub是基于Zend Framework 2的Github Api的包装程序,该框架使用 。安装主要设定将此项目克隆到您的./vendor/目录中,并在application.config.php文件中启用它。用法基本用法这是...

    Global site tag (gtag.js) - Google Analytics