- 浏览: 404110 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
fufu0414:
PHP类实例教程:abstract类和abstract方法 -
fufu0414:
[list][url][img][img][img][list ...
PHP类实例教程:abstract类和abstract方法
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 |
|
构造函数:参数正如描述的,将被用来设置对象的初始状态。在实例化过程中,一个 Zend_Loader_Autoloader 实例被注册了。传递给构造函数的选项值会传递给 setOptions()。 | |||
getEnvironment() | 字符串 | N/A | 检索传递给构造函数的环境字符串 | |||
getAutoloader() | Zend_Loader_Autoloader | N/A | 检索在实例化过程中注册的 Zend_Loader_Autoloader 实例。 | |||
setOptions(array $options) | Zend_Application |
|
全部的选项将会保存在内部,多次调用方法,将会合并选项。和大量 setter 方法匹配的选项将会传递给这些方法。例如,phpSettings 选项将会传递给 setPhpSettings() 方法。(选项名字不区分大小写) | |||
getOptions() | 数组 | N/A | 检索全部用于初始化对象的选项;可以在请求之间用来把 Zend_Config 选项缓存到一个序列化格式 | |||
hasOption($key) | 布尔值 |
|
确定一个带有指定键名的选项是否已经被注册。键名不区分大小写。 | |||
getOption($key) | 混合 |
|
检索一个给定键名的选项值。如果键名不存在,返回 NULL。 | |||
setPhpSettings(array $settings, $prefix = '') | Zend_Application |
|
设置运行时的 php.ini 配置。以点分离的设置可能按照等级组织(这可能和 INI Zend_Config 一起发生)通过一个数组的数组,而且依然能被正确解析。 | |||
setAutoloaderNamespaces(array $namespaces) | Zend_Application |
|
使用 Zend_Loader_Autoloader 实例注册的命名空间。 | |||
setBootstrap($path, $class = null) | Zend_Application |
|
||||
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 |
|
构造函数。接受一个单独的参数,这个参数应该是一个 Zend_Application 对象,或者另外一个 bootstrap 对象。 | |||
SetOptions(array $options) | Zend_Application_Bootstrap_Bootstrapper |
|
典型的,任何一个和 setter 匹配的选项将会唤起那个 setter;否则,选项将只会简单被保存,以便稍后的检索。 | |||
getApplication() | Zend_Application | Zend_Application_Bootstrap_Bootstrapper | N/A | 检索通过构造函数传递的应用程序或者 bootstrap 对象。 | |||
getApplication() | 字符串 | N/A | 检索父级应用程序或者引导对象中注册的环境字符串。 | |||
getClassResources() | 数组 | N/A | 检索在类中已经定义好的可用资源初始器的名字清单。这个可能与实现相关。 | |||
bootstrap($resource = null) | 混合 |
|
如果 $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 |
|
注册一个资源到类,提供可选的配置传递给这个资源 |
unregisterPluginResource($resource) | Zend_Application_Bootstrap_ResourceBootstrapper |
|
从类中移除一个插件资源 |
hasPluginResource($resource) | Boolean |
|
确定一个指定的资源是否已经注册到类中 |
getPluginResource($resource) | Zend_Application_Resource_Resource |
|
通过名字检索一个资源插件实例 |
getPluginResourceNames() | Array | N/A |
检索已经注册的全部插件资源名字的清单 |
setPluginLoader(Zend_Loader_PluginLoader_Interface $loader) | Zend_Application_Bootstrap_ResourceBootstrapper |
|
注册一个插件加载器实例,当解析插件类和名字的时候,将会使用它 |
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 |
|
构造函数。接受一个单独的参数,它应该是一个 Zend_Application 对象,或者另外一个引导对象。 |
setOptions(array $options) | Zend_Application_Bootstrap_Bootstrapper |
|
任何一个有匹配 setter 的选项,将会唤起那个 setter;否则,选项会被简单保存,以便将来检索。例如,如果你继承类,定义一个 setFoo() 方法,选项 foo 将会把值传递给那个方法。 另外两件事情,也可以使用特殊选项键。pluginPaths 可以用来指定插件资源的路径前缀;它应该是一个数组,类前缀到文件路径的数组。resources 可以用来指定将要使用的插件资源,它应该是:插件资源到实例选项的关联数组。 |
getOptions() | Array | N/A |
返回通过 setOptions() 注册的全部选项 |
hasOption($key) | Boolean |
|
确定一个选项键是否存在 |
getOption($key) | Mixed |
|
检索和一个选项键相关联的值,如果该键没有注册选项则返回 NULL |
setApplication(Zend_Application | Zend_Application_Bootstrap_Bootstrapper $application) | Zend_Application_Bootstrap_BootstrapAbstract |
|
注册父级应用程序或者引导对象 |
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 |
|
提供一个容器,用来储存资源。当一个资源方法或者插件返回一个值,它将被储存在这个容器中,以便将来检索 |
hasResource($name) | Boolean |
|
当一个资源方法或者插件返回一个值,它将被储存在资源容器(查看 getContainer() 和 setContainer() )。这个方法将会指示那个资源是否被设置一个值 |
getResource($name) | Mixed |
|
当一个资源方法或者插件返回一个值,它将被保存在资源容器中(查看 getContainer() 和 setContainer() )这个方法将从容器中检索一个资源 |
bootstrap($resource = null) | Mixed |
|
如果 $resource 是空的,执行全部的引导资源。如果是一个字符串,单独执行这个资源;如果是一个数组,执行数组中的每一个资源 这个方法可以用来运行在引导类中定义的资源方法或者通过资源插件类注册的资源。如果资源方法和资源插件有命名冲突,将优先执行在类中定义的资源方法 |
run() | Void | N/A |
定义启动以后将要运行的应用程序逻辑 |
__call($method, $args) | Mixed |
|
提供了这样一种机制:允许你调用 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 |
|
构造函数应该允许传递用于初始化状态设置的选项 |
setBootstrap(Zend_Application_Bootstrap_Bootstrapper $bootstrap) | Zend_Application_Resource_Resource |
|
应该允许注册父级引导程序对象 |
getBootstrap() | Zend_Application_Bootstrap_Bootstrapper | N/A |
检索已经注册的引导程序实例 |
setOptions(array $options) | Zend_Application_Resource_Resource |
|
设置资源状态 |
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 |
|
构造函数应该允许传递用于状态初始化的选项 |
setBootstrap(Zend_Application_Bootstrap_Bootstrapper $bootstrap) | Zend_Application_Resource_ResourceAbstract |
|
应该允许注册父级引导程序对象 |
getBootstrap() | Zend_Application_Bootstrap_Bootstrapper | N/A |
检索已经注册的引导程序实例 |
setOptions(array $options) | Zend_Application_Resource_ResourceAbstract |
|
设置资源状态 |
getOptions() | Array | N/A |
检索已经注册的选项 |
|
资源名字
当注册资源插件的时候,随之而来的一个问题是你如何从父级引导类引用这些资源。有三种不同的机制可以使用,这将取决你如何配置你的引导程序以及它的插件资源。
首先,如果你的插件被定义在一个已经定义好的前缀路径,你可以通过它们的“短名”来引用它们 —— 也就是说,在类名前缀后面的部分。举例说明,Zend_Application_Resource_View 这个类可以被简单的用 View 来引用,因为 Zend_Application_Resource 这个前缀路径已经被注册了。你可以使用类的全名或者短名来引用它们:
在每一个例子中,你可以然后引导这个资源,然后使用以下短名来检索它:
其次,如果没有匹配的插件路径被定义,你仍然可以把类的全名传递这个资源。在这种情况下,你可以使用资源的类全名来引用它:
显然,这会使得引用资源变得很累赘
这时候第三种选择出现了。你可以指定一个精确的名字,指定的资源类将会以这个名字注册。这可以通过增加一个公共 $_explicitType 属性给资源插件类,通过一个字符串值,这个值将使用,无论何时,你想通过引导程序引用这个插件资源。举例说明,让我们定义我们自己的视图类:
我们然后可以引导这个资源或者通过 My_View 这个名字检索它:
使用这些命名手段,你可以重写现存的资源,添加你自己的,混合多种资源来达到复杂的初始化,以及做更多事情。
相关推荐
本文实例讲述了Zend Framework教程之Zend_Layout布局助手。分享给大家供大家参考,具体如下: 一、作用 布局的作用和模版的作用类似。可以认为是把网站通用、公共的部分拿出来作为通用的页面框架。例如一个基本的web...
zf-doctrine, 一个Zend框架 1.x 和 Doctrine 1.2集成 Doctrine 1与 Zend 框架集成项目试图提供 Doctrine 1与 Zend ... 以下组件属于这里集成:Zend_Application资源Zend框架模块项目支持用于 Doctrine 模型生成,迁移
Zend 框架 Ajax 登录 这是一个基本的 ZF 安装,带有使用 ajax、重定向或弹出窗口登录的框架。 它使用 Zend_Auth 和 Zend_Auth_Adapters,因此很容易扩展。 这受到启发并使用了以下代码 使用 Chris Bisnett My_...
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_Worker 的快速示例此代码属于 application/workers 并命名为 DemoWorker.php,类名为 ...
使用 Zend 框架的 RESTful 应用程序Zend Framework 的这个扩展允许轻松创建 RESTful 控制器。 请记住,这些说明是通用的,您可能应该自定义代码以满足您的需要。 有关工作示例,请参阅假设您正在构建混合应用程序...
本文讲述了Zend Framework教程之MVC框架的Controller用法。分享给大家供大家参考,具体如下: 这里简单讲讲MVC模式中Controller的基本使用方法。 基本使用实例: root@coder-671T-M:/...
Zend 框架 2 安装 通过 composer 或者简单地将这个项目克隆到你的./vendor/目录并在你的./config/application.config.php文件中启用它。 提供的类和接口 GtnPersistZendDb\Infrastructure\ZendDb\Repository - Zend\...
这是一个使用Zend Framework MVC层和模块系统的框架应用程序。 该应用程序旨在作为希望使用Zend Framework入门的人的入门场所。 使用Composer安装 创建新的Zend Framework项目的最简单方法是使用 。 如果尚未安装,...
Zend 框架 2 模块 什么是 CsnCms? CsnCms 是一个基于DoctrineORMModule 、 CsnUser认证和CsnAuthorization的内容管理系统模块。 CsnCms 究竟是做什么的? CsnCms 是出于教育目的而创建的,以演示如何完成 CMS。 它...
这是一个准备将 Zend\Cache 库集成到 Silex 框架中的服务提供者。 安装 将以下依赖项添加到项目的composer.json文件中: { " require " : { " devsdmf/silex-zend-cache-provider " : " 1.1.0 " } } 用法 use ...
博客 这是一个非常简单的博客模块。 对于那些有简单愿望的人来说就足够了。 安装 ...在config/application.config.php启用新添加的模块 <?php return array ( 'modules' => array ( /* ... */
Juliangut Zend 框架维护模块Zend Framework 2 的维护模块。安装安装的最佳方法是使用 : php composer.phar require juliangut/zf-maintenance或者直接从 github 下载并将其放在应用程序的module/目录中。 将Jgut\...
FrontZend FrontZend 是一个专注于可用性开发的内容管理系统,旨在使开发人员和用户的工作更轻松、更直观和完全灵活,提高生产力并使创建和... 然后复制 application/configs/local-dist.ini 文件,将其重命名为 local
Zend 框架 2 模块,为 ZfcUser 添加了个人资料图片上传功能 要求 特征 当用户没有上传他的图像时,将 Gravatar 设置为替代方案 当用户没有上传他的图像时设置性别明智的默认图像 用于存储的调整大小选项 ...
- 使用 zend_call_function 代替 call_user_function - 废除 Yod_Request 类中的 errorAction 和 error404 方法 - 在配置中增加对 tpldata 和 plugins 的支持 - 在 Yod_Controller、Yod_Model 和 Yod_Application...
将不再使用Zend_Application。 依存关系 任何类似于应用程序 安装 通常,您将在HumusMvcSkeletonApplication中安装HumusMvc。 如果要执行这些步骤,请查看HumusMvcSkeletonApplication的安装说明。 但是,您可以...
yod_application_autoload 中使用PHP命名空间的一个BUG- 修改了常量 YOD_EXTPATH 的默认值- 修改 Yod_Application 中的 autoload、plugin 和 import 方法- 修正了 yod_init_compile_file 中的一个BUG (支持 zend_...
并采用国外最先进的ZEND框架,具备极强的扩展性,便于后续各类优秀功能的加入,打造个性化在线酒店预订网站。 2.采用了新版API接口,为后续提供更有竞争力的酒店数据及价格打下良好基础,让网站更具价值。 3.酒店...
适用于ZF2的Github Api模块介绍EdpGithub是基于Zend Framework 2的Github Api的包装程序,该框架使用 。安装主要设定将此项目克隆到您的./vendor/目录中,并在application.config.php文件中启用它。用法基本用法这是...