diff --git a/reference/yaf/appconfig.xml b/reference/yaf/appconfig.xml index 04eff002a..e51124866 100644 --- a/reference/yaf/appconfig.xml +++ b/reference/yaf/appconfig.xml @@ -1,7 +1,6 @@ - - + 应用程序配置 @@ -46,6 +45,30 @@ yaf.dispatcher.catchException = 0 ]]> + + + 当配置变得庞大时,每次请求都会重新解析 ini 文件的 Yaf_Config_Ini + 会带来明显的开销。 + Yaconf 只在 PHP 启动时 + 把某个目录下的所有 ini 文件解析一次,并把解析结果保存在共享内存中。 + 将 yaconf.directory 设置为存放配置的目录,然后把返回的数组传给 + Yaf_Application::__construct: + + + +]]> + + + 包含 [section] 标头的文件会按分节暴露为多个条目(继承关系, + 如 [product : yaf],会被自动解析)。可以用点号获取单个分节, + Yaconf::get("application.product"),然后改传该数组; + 它的键恰好是该分节合并后的各个条目。 + + @@ -159,9 +182,9 @@ yaf.dispatcher.catchException = 0 - - 此为唯一没有默认值的配置条目,应该始终手动定义它。 - + + 此为唯一没有默认值的配置条目,应该始终手动定义它。 + @@ -213,10 +236,10 @@ yaf.dispatcher.catchException = 0 yaf.library。 - - Yaf 2.1.6 以后,该配置项可以是数组。类库的路径将尝试使用 application.library.directory 中设置的条目。 - + + Yaf 2.1.6 以后,该配置项可以是数组。类库的路径将尝试使用 application.library.directory 中设置的条目。 + @@ -227,9 +250,8 @@ yaf.dispatcher.catchException = 0 - Alias of application.library. Introduced - in Yaf 2.1.6 + application.library 的别名。 + 自 Yaf 2.1.6 引入 @@ -355,9 +377,9 @@ yaf.dispatcher.catchException = 0 在application.ini中设置Yaf运行时配置,如: application.system.lowcase_path - + 仅有 INI_ALL 配置项能这样设置 - + diff --git a/reference/yaf/book.xml b/reference/yaf/book.xml index 2005681bd..bdce03002 100644 --- a/reference/yaf/book.xml +++ b/reference/yaf/book.xml @@ -1,7 +1,6 @@ - - + Yet Another Framework @@ -9,15 +8,23 @@ &reftitle.intro; - - Yet Another Framework (Yaf) 扩展是一个用来开发 web 应用程序的 PHP 框架。 - - - 可以在 Yaf Performance 中找到简单的 Yaf 基准测试。 - - - 快速入门请参见教程部分。 - + + Yet Another FrameworkYaf)扩展是一个用来开发 web 应用程序的 PHP 框架。 + + + 与典型的 PHP 框架不同,Yaf 使用 C 语言编写并编译为扩展:框架类、自动加载器、路由器和分发循环都运行在编译后的代码中,因此单次请求的框架开销以微秒而非毫秒计,也没有需要加载的框架 PHP 文件。它为引导成本至关重要的高流量应用,以及每个请求都需要一个干净的分发周期的长生命周期服务运行时(例如 Swoole)而设计。 + + + Yaf 实现了经典的 MVC 架构:单一入口脚本、带有环境分节的配置文件、引导钩子、具有七个分发钩子的插件系统、六种内置路由类型、PSR-0 风格的自动加载器(Yaf_Loader)以及轻量级的 PHP 模板视图(Yaf_View_Simple)。 + + + 可以在 Yaf Performance 中找到简单的 Yaf 基准测试。快速入门指南请参见 教程 部分。 + + + + Yaf 需要 PHP 7.0 或更高版本(其源码仓库的 master 分支);另有 php5 分支支持 PHP 5.2 及更高版本。 + + &reference.yaf.setup; @@ -41,6 +48,8 @@ &reference.yaf.yaf-request-http; &reference.yaf.yaf-request-simple; &reference.yaf.yaf-response-abstract; + &reference.yaf.yaf-response-cli; + &reference.yaf.yaf-response-http; &reference.yaf.yaf-route-interface; &reference.yaf.yaf-route-map; &reference.yaf.yaf-route-regex; diff --git a/reference/yaf/constants.xml b/reference/yaf/constants.xml index 22c74669d..400e6749b 100644 --- a/reference/yaf/constants.xml +++ b/reference/yaf/constants.xml @@ -1,10 +1,12 @@ - - + &reftitle.constants; &extension.constants; + + 当启动、路由、分发或自动加载过程中发生错误时,Yaf 要么抛出一个异常代码为 YAF_ERR_* 常量之一的 Yaf_Exception 子类,要么触发相应类型的 PHP 错误——参见 Yaf_Dispatcher::throwExceptionYaf_Application::getLastErrorNo。 + @@ -14,6 +16,7 @@ + 已加载的 Yaf 扩展的版本,例如 "3.3.8" @@ -24,6 +27,7 @@ + 扩展启动时 yaf.environ 指令的值,Yaf_Application 用它来选择配置分节。默认值为 "product" @@ -34,6 +38,7 @@ + 启动失败,值为 512。当 Yaf_Application 无法启动时以 Yaf_Exception_StartupError 抛出,例如应用目录缺失或配置无效。 @@ -44,6 +49,7 @@ + 路由失败,值为 513。当没有任何路由能够处理该请求时以 Yaf_Exception_RouterFailed 抛出。 @@ -54,16 +60,7 @@ - - - - - - YAF_ERR_AUTOLOAD_FAILED - (int) - - - + 分发失败,值为 514。当请求无法被分发时以 Yaf_Exception_DispatchFailed 抛出,例如超出 yaf.forward_limit。 @@ -74,6 +71,7 @@ + 找不到模块,值为 515。以 Yaf_Exception_LoadFailed_Module 抛出。 @@ -84,6 +82,7 @@ + 找不到控制器,值为 516。以 Yaf_Exception_LoadFailed_Controller 抛出。 @@ -94,6 +93,7 @@ + 找不到动作,值为 517。以 Yaf_Exception_LoadFailed_Action 抛出。 @@ -104,6 +104,7 @@ + 找不到视图脚本,值为 518。以 Yaf_Exception_LoadFailed_View 抛出。 @@ -114,6 +115,18 @@ + 调用方法失败,值为 519。当动作方法或其他可调用对象无法被调用时使用。 + + + + + + YAF_ERR_AUTOLOAD_FAILED + (int) + + + + 自动加载失败,值为 520。当类的文件无法被加载时由 Yaf_Loader 触发,例如解析出的路径过长。 @@ -124,6 +137,21 @@ + 发生类型错误,值为 521。当参数或类定义的类型不符合预期时以 Yaf_Exception_TypeError 抛出,例如控制器不是一个继承自 Yaf_Controller_Abstract 的类。 + + + + + + YAF_ERR_ACCESS_ERROR + (int) + + + + 不允许访问,值为 522。例如尝试调用一个非 public 的动作方法时使用。 + + + (自 Yaf 3.2.0 起可用。) diff --git a/reference/yaf/ini.xml b/reference/yaf/ini.xml index ec9c3cc2f..c6b369f77 100644 --- a/reference/yaf/ini.xml +++ b/reference/yaf/ini.xml @@ -1,6 +1,6 @@ - +
&reftitle.runtime; &extension.runtime; @@ -19,62 +19,56 @@
yaf.library - + "" INI_ALL - yaf.action_prefer - 0 - INI_ALL + yaf.environ + "product" + INI_SYSTEM - yaf.lowcase_path - 0 + yaf.forward_limit + 5 INI_ALL - yaf.use_spl_autoload + yaf.use_namespace 0 INI_ALL - yaf.forward_limit - 5 - INI_ALL - - - - yaf.name_suffix - 1 + yaf.action_prefer + 0 INI_ALL - yaf.name_separator - + yaf.lowcase_path + 0 INI_ALL - yaf.cache_config + yaf.use_spl_autoload 0 - INI_SYSTEM + INI_ALL - yaf.environ - product - INI_SYSTEM + yaf.name_suffix + 1 + INI_ALL - yaf.use_namespace - 0 - INI_SYSTEM + yaf.name_separator + "" + INI_ALL @@ -84,198 +78,195 @@ &ini.descriptions.title; + + + + yaf.cache_config 指令曾存在于 Yaf 2.x 中, + 用于在 PHP 进程内缓存 INI 配置文件的解析结果。它在 Yaf 3.0.0 中 + 已被移除,不再被识别。 + + + + yaf.library - string - - 全局库路径,Yaf_loader 会在此目录下搜索全局库。 - + + 全局库目录。Yaf_Loader + 会在此目录下搜索应用的本地库中找不到的类(参见 + application.library)。 + + + 另请参见 Yaf_Loader::getLibraryPath 和 + Yaf_Loader::setLibraryPath。 + - + - yaf.action_prefer - int + yaf.environ + string - - If there is only one part in PATH_INFO, should it consider as a - controller or action. - - - 如果此配置为 On,将视为 Action 名。 - + + 环境名称,默认为 "product"。它被 + Yaf_Application 用来选择 INI 配置文件 + (其第一个构造参数)中作为应用配置的分节。 + + + 例如,如果此值为 "product",Yaf 将使用 INI + 配置文件中名为 [product] 的分节,作为 + Yaf_Application 的最终配置。 + 也可以通过给 Yaf_Application::__construct + 传递第二个构造参数,为每个应用单独覆盖环境名称。 + - + - yaf.lowcase_path + yaf.forward_limit int - - Whether lowercase all the path during the class autoloading. - + + Yaf_Controller_Abstract::forward 在单次请求中 + 最多可以链式调用的次数,默认为 5。 + + + 这是防止 Yaf_Controller_Abstract::forward + 递归循环的保护;超出限制时将抛出 + Yaf_Exception_DispatchFailed。 + 非正数值会被强制取默认值。 + - + - yaf.use_spl_autoload + yaf.use_namespace int - - When this value is On, if Yaf_Loader can not - find a class, it will return &false;, then give chance to other auto - load function to be called. - - - When this value is Off, if Yaf_Loader can not - find a class, it will return &true;, and make the class autoloading - failed immediately. - + + 启用后,Yaf 声明的所有类都将以命名空间风格命名: + + + \Yaf\Route\Rewrite +Yaf_Request_Http => \Yaf\Request\Http +]]> + + + 有一个例外:最后一段是 PHP 保留关键字的类不能用作类名; + 这类类的最后一段保留下划线: + + + \Yaf\Controller_Abstract +Yaf_Route_Static => \Yaf\Route_Static +]]> + - - Yaf will register its loader during a instantiation of - Yaf_Application, so any other auto loaders - which is register before the instantiation will be called before - Yaf_Loader::autoload. - + + 扩展启动时只注册两种命名风格中的一种, + 因此此指令必须在扩展加载之前设置; + 它无法在每个请求之间有意义地切换。 + - - When this value is Off(default), - Yaf_Loader::autoload will always return - &true;. - - + - yaf.forward_limit + yaf.action_prefer int - - The max forward count, default is 5. that means you can have a max - value of 5 in the forward stack. - - - This is a protection for prevent recursive - Yaf_Controller_Abstract::forward. - + + 当 PATH_INFO 中只有一部分时, + 决定应将其视为控制器名还是动作名。 + + + 如果此配置为开启,单个路径段被视为动作名, + 控制器名回退到默认控制器;否则将其视为控制器名。 + - + - yaf.name_suffix + yaf.lowcase_path int - - When this On, Yaf_Loader will identify a class by it's suffix to decide - whether it is a MVC Class. - - - When this Off, Yaf_Loader will look at the prefix of the class name. - + + 是否在类自动加载期间将所有路径组件转换为小写。 + - + - yaf.name_separator - string + yaf.use_spl_autoload + int - - When this is not empty, Yaf_Loader will identify the class suffix and - string value of this. - - - For example, when this value is "_", Yaf_Loader will take Index_Controller as - a Controller Class, IndexController as a normal class. - + + 当此值开启时,如果 Yaf_Loader 找不到一个类, + 它将返回 &false;,从而给其他自动加载函数一个被调用的机会。 + + + 当此值关闭(默认)时,如果 + Yaf_Loader 找不到一个类,它将返回 &true;, + 类的自动加载会立即失败:在这种模式下 + Yaf_Loader::autoload 总是返回 &true;。 + + + + Yaf 在 Yaf_Application 实例化期间注册它的加载器, + 因此在实例化之前注册的任何其他自动加载器都会先于 + Yaf_Loader::autoload 被调用。 + + - + - yaf.cache_config + yaf.name_suffix int - - If this is On, and in the meantime you are using ini config file as the - parameter of Yaf_Application, the - compiling result of the ini config file will be cached in the PHP - process. - - - Yaf examine the mtime of the ini file, if it was changed since - last compiling, Yaf will reload it. - - - - - Yaf use the ini file path as the cache entry key, so do use the - absolute path in ini file path, otherwise there might be some - conflicts if two application use the same relative path of ini - config. - - - + + 当此值开启(默认)时,Yaf_Loader + 通过类的后缀来识别 MVC 类,以决定它是控制器还是动作类: + IndexControllerIndexAction。 + + + 当此值关闭时,Yaf_Loader 改为查看类名的前缀: + Controller_IndexAction_Index。 + - + - yaf.environ + yaf.name_separator string - - 默认值是“product”,用于 Yaf 获取 ini 配置文件中的配置部分。 - - - That is, if this value is "product", Yaf will use the section named - "product" in the ini config file(the first parameter of the - Yaf_Application) as the final config of the - Yaf_Application. - + + 当此值不为空时,Yaf_Loader 用此分隔符 + 代替下划线来分隔名称与 MVC 后缀,以此识别 MVC 类。 + + + 例如,当此值为 "_" 且 + yaf.name_suffix 开启时, + Yaf_Loader 会把 + Index_Controller 视为控制器类, + 而 IndexController 被视为普通类。 + 当它为空(默认)时,使用下划线。 + - - - - yaf.use_namespace - int - - - - 如果值为 On,Yaf 的所有类都将以命名空间样式命名。 - - - 例如: - - \Yaf\Route\Rewrite -Yaf_Request_Http => \Yaf\Request\Http - ]]> - - 有个例外,就是像 Yaf_Controller_Abstract 这样的类。最后部分是 PHP - 的关键字,不能用作类名,对于这样的类,只能: - - \Yaf\Controller_Abstract -Yaf_Route_Static => \Yaf\Route_Static - ]]> - - - - - diff --git a/reference/yaf/reference.xml b/reference/yaf/reference.xml deleted file mode 100644 index 424db8f25..000000000 --- a/reference/yaf/reference.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Yaf &Functions; - - &reference.yaf.entities.functions; - - - - diff --git a/reference/yaf/setup.xml b/reference/yaf/setup.xml index bd0c5c1a0..ac26d8829 100644 --- a/reference/yaf/setup.xml +++ b/reference/yaf/setup.xml @@ -1,7 +1,7 @@ - - + + &reftitle.setup; @@ -15,6 +15,39 @@ &pecl.info; &url.pecl.package;yaf. + + Yaf 没有外部依赖。使用以下命令安装: + + + + 从 3.3.8 起,Yaf 也可以使用扩展的 PHP 安装器 &link.pie; 安装: + + + + + + 源码托管在 GitHub 上。 + 要从源码构建扩展: + + + + 然后在 php.ini 中添加下面一行来加载它: + + + + &pecl.windows.download.avail; diff --git a/reference/yaf/tutorials.xml b/reference/yaf/tutorials.xml index a593c16f6..0c7e62e1a 100644 --- a/reference/yaf/tutorials.xml +++ b/reference/yaf/tutorials.xml @@ -1,47 +1,89 @@ - - + &reftitle.examples; +
+ 快速入门 + 一个典型的应用目录结构 + + + 将 web 服务器的 DocumentRoot 设置为 + public 目录,这样从 web 就只能访问公开资源。 + + + + + 多模块应用的目录结构 + + + + 在多模块应用中,每个模块在 + application/modules/<ModuleName>/ 下都有自己的 + controllersviews 目录。 + 已注册的模块在 + application.modules 中声明。 + - 入口文件 - 顶层目录下的 index.php 是整个应用的唯一入口,应该把所有请求都重定向到这个文件(在 Apache + php_mod 模式下可以使用 .htaccess)。 - + 入口 + + public 目录下的 index.php 是整个应用的唯一入口, + 应该把所有请求都重写到它(在 Apache + mod_php 下可以使用 + .htaccess,或者你的 web 服务器中的等效配置,见下文)。 + + bootstrap() //call bootstrap methods defined in Bootstrap.php ->run(); ?> ]]> - + @@ -55,13 +97,13 @@ RewriteRule .* index.php #for nginx server { - listen ****; - server_name domain.com; + listen 80; + server_name domain.com; root document_root; index index.php index.html index.htm; - if (!-e $request_filename) { - rewrite ^/(.*) /index.php$1 last; + location / { + try_files $uri $uri/ /index.php?$args; } } @@ -72,12 +114,51 @@ $HTTP["host"] =~ "(www.)?domain.com$" { ) } ]]> - + + + + + 引导 + + Bootstrap 类中所有名称以 _init + 开头的方法都会被 Yaf_Application::bootstrap + 按定义顺序自动调用。每个这样的方法都会收到 + Yaf_Dispatcher 实例作为参数。 + 名称为其他名称的方法不会被自动调用。 + + + +]]> + - 应用配置文件 - + 应用配置 + + application.ini 是应用的配置文件。 + 其中可以使用 index.php 中定义的常量, + 并且各个分节之间可以相互继承。 + + - + + + + + 使用 PHP 数组作为应用配置 + + 除了 INI 配置文件,也可以把一个普通的 PHP 数组作为配置传递给 + Yaf_Application::__construct。 + + + array( + "directory" => APPLICATION_PATH . "/application/", + ), +); + +$app = new Yaf_Application($config); +?> +]]> + 默认控制器 - + + 在 Yaf 中,默认控制器名为 IndexController: + + _view->word = "hello world"; - //or - // $this->getView()->word = "hello world"; - } +class IndexController extends Yaf_Controller_Abstract +{ + // default action name + public function indexAction() + { + $this->getView()->content = "Hello World"; + } } ?> ]]> - + - 默认视图文件 - + 默认视图模板 + + 默认控制器/动作的视图脚本是 + application/views/index/index.phtml。Yaf 提供了一个 + 名为 Yaf_View_Simple 的小型视图引擎, + 它的模板是普通的 PHP 脚本。 + + Hello World - + ]]> - + 运行应用 + + 将浏览器指向已配置的域名 + (例如 http://www.example.com),响应将如下所示: + &example.outputs.similar; - - 在 yaf@github 上有 Yaf 代码生成器,你也可以用它来生成上面的例子。 - + + 上面的最小示例也可以使用随 + Yaf + 源码仓库 一起发布的 Yaf 代码生成器 + (tools/cg/yaf_cg)生成: + + + + + + yaf_cg 会生成比本教程所示更完整、带注释的骨架: + 一个带重写规则的 public/ 入口、配置了插件和自定义路由的 + Bootstrap、示例模型、错误控制器以及视图模板。它是开发实际应用的 + 一个良好起点。 + - +
+ +
+ 自定义路由 + + + 自定义路由 + + 除了默认的 Yaf_Route_Static 路由, + 还可以使用 Yaf_Router::addRoute 在 + Yaf_Router 路由栈上注册自定义路由, + 通常在 Bootstrap 的 _initRoute 方法中进行。 + 也可以在配置文件中声明路由,并使用 + Yaf_Router::addConfig 加载。 + + +getRouter(); + + // /user/123 -> controller=user, action=index, id=123 + $router->addRoute("user", new Yaf_Route_Rewrite( + "/user/:id", + array("controller" => "user", "action" => "index") + )); + } +} +?> +]]> + + + +
+ +
+ 插件 + + + 插件 + + 插件通过继承 Yaf_Plugin_Abstract 并重写其六个 + 钩子方法中的一个或多个来挂入分发循环,然后通常在 Bootstrap 中使用 + Yaf_Dispatcher::registerPlugin 注册到分发器上: + + +registerPlugin(new UserPlugin()); + } +} +?> +]]> + + + +
+ +
- + Yaf_Action_Abstract 类 @@ -11,12 +11,14 @@
&reftitle.intro; + + 在 Yaf 中,动作(action)可以定义在一个单独的文件里(参见 + Yaf_Controller_Abstract)。也就是说, + 一个动作方法也可以是一个 Yaf_Action_Abstract 类。 + - 在 Yaf 中一个 action 可以采用单独定义 Yaf_Action_Abstract 来实现。 - 亦即,一个 action 方法也可以是一个 Yaf_Action_Abstract 的派生类。 - - - Yaf 需要一个可以被它所调用的入口点,所以在你自己的动作类里面必须要实现抽象方法 + 由于必须有一个可以被 Yaf 调用的入口点, + 所以在自定义的动作类中必须实现抽象方法 Yaf_Action_Abstract::execute
@@ -64,46 +66,13 @@
&reftitle.properties; - - _module - - - - - - _name - - - - - - _request - - - - - - _response - - - - - - _invoke_args - - - - - - _view - - - - _controller - + + 拥有此动作的控制器实例,可通过 + Yaf_Action_Abstract::getController 获取。 + diff --git a/reference/yaf/yaf-application.xml b/reference/yaf/yaf-application.xml index 90b00cc3f..16f505c94 100644 --- a/reference/yaf/yaf-application.xml +++ b/reference/yaf/yaf-application.xml @@ -1,7 +1,6 @@ - - + Yaf_Application 类 @@ -12,23 +11,21 @@
&reftitle.intro; - - Yaf_Application 为应用提供了一个辅助设施。 - 它提供了可重用的资源,常见的和模块化的引导类,还有依赖的检查。 - - - - - Yaf_Application 实现了单例模式。 - Yaf_Application 不能够被序列化和反序列化, - 因为当你尝试使用 PHPUnit 来为 Yaf 写一些测试用例的时候会造成一些不必要的麻烦。 - - - 你可以使用 PHPUnit 的 @backupGlobals 注释来控制全局变量的备份和恢复操作, - 从而可以解决这个问题。 - - - + + Yaf_Application 为应用提供引导(bootstrap)设施, + 它提供可重用的资源、通用及基于模块的引导类,以及依赖检查。 + + + + Yaf_Application 实现了单例模式, + 而且 Yaf_Application 不能被序列化或反序列化, + 当你尝试使用 PHPUnit 为 Yaf 编写测试用例时会造成问题。 + + + 你可以使用 PHPUnit 的 @backupGlobals 注释 + 来控制全局变量的备份和恢复操作,从而解决这个问题。 + +
@@ -73,18 +70,25 @@ protected _environ + + protected + _err_no + + + protected + _err_msg + + - &Methods; -
- +
&reftitle.properties; @@ -92,37 +96,52 @@ config - + 应用配置对象。 dispatcher - + 此应用使用的 Yaf_Dispatcher 实例。 _app - + 指向当前唯一运行中的应用实例的静态引用。 _modules - + 已注册的模块名列表,解析自 + application.modules。 _running - + 应用当前是否正在运行。 _environ - + 应用的环境名称,默认为 + "product" + + + + _err_no + + 最后一次错误的错误码,是 + YAF_ERR_* 常量之一。 + + + + _err_msg + + 最后一次错误的错误信息。 diff --git a/reference/yaf/yaf-bootstrap-abstract.xml b/reference/yaf/yaf-bootstrap-abstract.xml index c71ba084a..7a1ffce78 100644 --- a/reference/yaf/yaf-bootstrap-abstract.xml +++ b/reference/yaf/yaf-bootstrap-abstract.xml @@ -1,6 +1,6 @@ - + Yaf_Bootstrap_Abstract 类 diff --git a/reference/yaf/yaf-config-abstract.xml b/reference/yaf/yaf-config-abstract.xml index 9e779ead8..5c4230cdb 100644 --- a/reference/yaf/yaf-config-abstract.xml +++ b/reference/yaf/yaf-config-abstract.xml @@ -1,6 +1,6 @@ - + Yaf_Config_Abstract 类 @@ -11,9 +11,14 @@
&reftitle.intro; - - - + + Yaf_Config_Abstract 是配置适配器的基类。 + 它提供了一种统一的方式来访问一组配置值, + 支持嵌套属性语法($config->section->key)、 + 数组访问和迭代。具体实现有 + Yaf_Config_Ini(只读、支持节继承的 INI 文件) + 和 Yaf_Config_Simple(PHP 数组、可修改)。 +
@@ -42,7 +47,7 @@ _readonly - + &Methods; @@ -50,7 +55,7 @@
- +
&reftitle.properties; diff --git a/reference/yaf/yaf-config-ini.xml b/reference/yaf/yaf-config-ini.xml index b3702e312..e9e87d68f 100644 --- a/reference/yaf/yaf-config-ini.xml +++ b/reference/yaf/yaf-config-ini.xml @@ -1,7 +1,6 @@ - - + Yaf_Config_Ini 类 @@ -12,19 +11,38 @@
&reftitle.intro; - - Yaf_Config_Ini 允许开发者通过嵌套的对象属性语法在应用程序中用熟悉的INI格式存储和读取配置数据。 - INI格式在提供拥有配置数据键的等级结构和配置数据节之间的继承能力方面具有专长。 - 配置数据等级结构通过用点或者句号(“.”)分离键值。 - 一个节可以扩展或者通过在节的名称之后带一个冒号(“:”)和被继承的配置数据的节的名称来从另一个节继承。 - - - Yaf_Config_Ini 利用 PHP 的函数 parse_ini_file() 来解析配置文件的。 - 请仔细查看这个函数的文档,注意它的一些特殊用途。以及它传递给 Yaf_Config_Ini 的一些比如 - “&true;”、“&false;”、“yes”、“no”和“&null;”的特殊值的处理方式。 - - - + + Yaf_Config_Ini 允许开发者把配置数据存储在熟悉的 INI 格式中, + 并在应用程序中使用嵌套的对象属性语法来读取它。 + INI 格式在提供配置数据键的层级结构以及配置数据节之间的继承能力方面具有专长。 + 配置数据层级结构通过使用点号(".")分隔键名来实现。 + 一个节可以在节的名称之后加一个冒号(":") + 以及要继承数据的节的名称,来扩展或继承另一个节。 + + + + Yaf_Config_Ini 利用了 PHP 的 + parse_ini_file 函数。请仔细查看该函数的文档, + 了解它的特定行为,这些行为会传递到 + Yaf_Config_Ini, + 比如特殊值 "&true;"、"&false;"、"yes"、"no" 和 "&null;" 的处理方式。 + + + + + Yaf_Config_Ini 会在每次请求时解析配置文件。 + 如果应用管理着大量的(基本静态的)配置,可以考虑使用 + Yaconf 扩展:它将配置保存在 + 整个 PHP 生命周期内的共享内存中,因此只需解析一次, + 访问效率也要高得多。 + Yaconf 理解完全相同的 INI 语法——用点号分隔的键, + 以及通过 "[section : parent]" 实现的分节继承—— + 因此现有的 application.ini 可以原样由 Yaconf 使用; + 变化的只是把它传给 + Yaf_Application::__construct 的方式 + (参见 应用程序配置 中的提示)。 + +
@@ -40,12 +58,12 @@ Yaf_Config_Ini - + extends Yaf_Config_Abstract - + Iterator @@ -61,11 +79,11 @@ &Properties; - + &Methods; - + &InheritedMethods; @@ -74,7 +92,7 @@
- +
&reftitle.properties; @@ -100,11 +118,12 @@ <function>Yaf_Config_Ini</function> 示例 - 这个例子说明了使用 Yaf_Config_Ini 从一个 INI 配置文件中获取配置数据的基本用法。 - 这个例子中既有生产环境的配置方法也有演示环境的配置方法。 - 因为演示环境的配置跟生产环境的非常类似,所以演示环境的配置继承了生产环境的配置。 - 在复杂的情况下,决定是任意的,也可以写成相反的。在更复杂的情况下,生产环境继承自演示环境不是不可能的。 - 假设,以下配置数据都包含在 /path/to/config.ini 中: + 这个例子说明了使用 Yaf_Config_Ini 从 INI 文件中加载配置数据的基本用法。 + 这个例子中既有生产环境的配置数据,也有预发布(staging)环境的配置数据。 + 因为预发布环境的配置数据与生产环境的非常相似,所以预发布节继承自生产节。 + 在这里这个决定是任意的,也可以反过来写,让生产节继承自预发布节, + 不过在更复杂的情况下可能就不是这样了。 + 假设以下配置数据包含在 /path/to/config.ini 中: - + Yaf_Config_Simple 类 @@ -11,9 +11,13 @@
&reftitle.intro; - - Yaf_Config_Simple 是 Yad_Config_ini 的简洁版本,只允许传入数组进行初始化,并提供了设置 readonly 的参数。 - + + Yaf_Config_Simple 是基于 PHP 数组 + (可选地,也可以基于 INI 文件)的配置适配器。 + 与 Yaf_Config_Ini 不同,它默认是可修改的: + 可以在运行时修改配置值,这使它既适用于以编程方式构建的配置, + 也适用于需要在请求过程中调整的配置。 +
@@ -29,12 +33,12 @@ Yaf_Config_Simple - + extends Yaf_Config_Abstract - + Iterator @@ -54,11 +58,11 @@ _readonly - + &Methods; - + &InheritedMethods; @@ -67,7 +71,7 @@
- +
&reftitle.properties; diff --git a/reference/yaf/yaf-controller-abstract.xml b/reference/yaf/yaf-controller-abstract.xml index 528da0f8d..a9d0b5fdd 100644 --- a/reference/yaf/yaf-controller-abstract.xml +++ b/reference/yaf/yaf-controller-abstract.xml @@ -1,6 +1,6 @@ - + Yaf_Controller_Abstract 类 @@ -12,26 +12,36 @@
&reftitle.intro; - Yaf_Controller_Abstract 是 Yaf 系统的 MVC 体系的核心部分。MVC - 是指 Model-View-Controller,是一个用于分离应用逻辑和表现逻辑的设计模式。 + Yaf_Controller_Abstract 是 Yaf 系统的核心部分。 + MVC 是 Model-View-Controller(模型-视图-控制器)的缩写, + 是一种旨在分离应用逻辑与显示逻辑的设计模式。 - 每个自定义 controller 都应当继承 Yaf_Controller_Abstract。 + 每个自定义控制器都应当继承 + Yaf_Controller_Abstract + + 由于 Yaf_Controller_Abstract::__construct + 是由 Yaf 不带参数调用的, + Yaf_Controller_Abstract 提供了一个替代的 + 类构造函数钩子: + Yaf_Controller_Abstract::init。 + - 自定义 controller 中无法定义 __construct 方法。因此,Yaf_Controller_Abstract - 提供了一个魔术方法 Yaf_Controller_Abstract::init。 + 如果你在自定义控制器中定义了 init() 方法, + 那么当控制器被实例化时它将被调用。 - 如果自定义 controller 里已经定义了 init() 方法,当实例化 controller 的时候,它将被调用。 - - - Action 可能需要参数,当请求来到的时候,在路由中如果请求的参数有相同名称的变量(例如:Yaf_Request_Abstract::getParam),Yaf - 将把他们传递给 action 方法(参阅 Yaf_Action_Abstract::execute)。 + 动作(action)可以带参数。当请求到来时,如果经过路由之后 + 请求参数(参见 + Yaf_Request_Abstract::getParam)中 + 存在同名的变量,Yaf 将会把它们传递给动作方法 + (参见 Yaf_Action_Abstract::execute)。 - - 这些参数是直接获取的,没有过滤,使用他们之前应该仔细处理。 - + + 这些参数是直接获取的,没有经过过滤, + 在使用之前应当仔细处理。 +
@@ -54,7 +64,7 @@ &Properties; - public + protected actions @@ -82,7 +92,7 @@ _view - + &Methods; @@ -91,7 +101,7 @@
- +
&reftitle.properties; @@ -100,7 +110,8 @@ actions - 也可以通过使用此属性和 Yaf_Action_Abstract 在一个单独的 PHP 脚本中定义 action 方法。 + 你也可以通过使用此属性和 Yaf_Action_Abstract + 在一个单独的 PHP 脚本中定义动作方法。 在单独的文件中定义 action @@ -143,47 +154,50 @@ class DummyAction extends Yaf_Action_Abstract { _module - - 模块名 - + + 该控制器所属的模块名。 + _name - - 控制器名 - + + 控制器名。 + _request - - 当前请求实例 - + + 当前的 Yaf_Request_Abstract 对象。 + _response - - 当前响应对象 - + + 当前的 Yaf_Response_Abstract 对象。 + _invoke_args - + + 通过 Yaf_Controller_Abstract::forward + 传递给动作的调用参数,是一个以参数名为键的数组。 + _view - - 视图引擎 - + + 用于渲染视图的 Yaf_View_Interface 对象。 + diff --git a/reference/yaf/yaf-dispatcher.xml b/reference/yaf/yaf-dispatcher.xml index bf75bc909..310bb3388 100644 --- a/reference/yaf/yaf-dispatcher.xml +++ b/reference/yaf/yaf-dispatcher.xml @@ -1,6 +1,6 @@ - + Yaf_Dispatcher 类 @@ -12,14 +12,14 @@
&reftitle.intro; - Yaf_Dispatcher用于初始化处理请求的运行环境, - 它协调路由来的请求, 并分发和执行发现的动作, - 然后收集动作产生的响应, 输出响应给请求者, 并在整个过程完成以后返回响应. + Yaf_Dispatcher 的职责是初始化请求环境, + 对到来的请求进行路由,然后分发发现的任何动作; + 它汇集所有的响应,并在整个过程完成后将其返回。 - Yaf_Dispatcher是单例模式运行的, - 也就是说自始至终只生成一个Yaf_Dispatcher实例, - 因此, 可以把它看成是在分发过程中生成的对象的注册表, 可以从中获取到分发过程中产生的对象. + Yaf_Dispatcher 还实现了单例模式, + 也就是说在任何时刻只允许存在一个实例。这使得它同时可以充当 + 一个注册表,供分发过程中的其他对象使用。
@@ -86,16 +86,15 @@ _default_action - &Methods; - +
- +
&reftitle.properties; @@ -103,67 +102,81 @@ _router - + 分发器用于对请求进行路由的 + Yaf_Router 实例。 _view - + 用于渲染视图的 Yaf_View_Interface + 实现,在第一次分发时延迟初始化。 _request - + 正在被分发的请求对象。 _plugins - + 通过 + Yaf_Dispatcher::registerPlugin + 注册的插件列表。 _instance - + 指向唯一的分发器实例的静态引用。 _auto_render - + 分发器是否在分发之后自动渲染视图。 + 默认为 &true;。 _return_response - + Yaf_Application::run 是否返回 + 响应对象而不是直接发送它。默认为 + &false;。 _instantly_flush - + 响应体在被设置时是否立即输出。 + 默认为 &true;。 _default_module - + 默认模块名,来自 + application.dispatcher.defaultModule + 配置项。 _default_controller - + 默认控制器名,来自 + application.dispatcher.defaultController + 配置项。 _default_action - + 默认动作名,来自 + application.dispatcher.defaultAction + 配置项。 diff --git a/reference/yaf/yaf-exception-dispatchfailed.xml b/reference/yaf/yaf-exception-dispatchfailed.xml index e58dd07c2..7e301fd99 100644 --- a/reference/yaf/yaf-exception-dispatchfailed.xml +++ b/reference/yaf/yaf-exception-dispatchfailed.xml @@ -1,6 +1,6 @@ - + Yaf_Exception_DispatchFailed 类 @@ -11,9 +11,11 @@
&reftitle.intro; - - - + + 当分发器无法把已路由的请求分发到控制器动作时, + 会抛出 Yaf_Exception_DispatchFailed。 + 它的错误码是 514。 +
@@ -29,7 +31,7 @@ Yaf_Exception_DispatchFailed - + extends Yaf_Exception @@ -37,9 +39,9 @@ &Properties; - + &Methods; - + &InheritedMethods; @@ -48,7 +50,7 @@
- + diff --git a/reference/yaf/yaf-exception-loadfailed-action.xml b/reference/yaf/yaf-exception-loadfailed-action.xml index abbf345e1..2fbeb4b72 100644 --- a/reference/yaf/yaf-exception-loadfailed-action.xml +++ b/reference/yaf/yaf-exception-loadfailed-action.xml @@ -1,6 +1,6 @@ - + Yaf_Exception_LoadFailed_Action 类 @@ -11,9 +11,11 @@
&reftitle.intro; - - - + + 当请求的动作无法被找到或加载时, + 会抛出 Yaf_Exception_LoadFailed_Action。 + 它的错误码是 517。 +
@@ -29,7 +31,7 @@ Yaf_Exception_LoadFailed_Action - + extends Yaf_Exception_LoadFailed @@ -38,9 +40,9 @@ &Properties; - + &Methods; - + &InheritedMethods; @@ -49,7 +51,7 @@ - + diff --git a/reference/yaf/yaf-exception-loadfailed-controller.xml b/reference/yaf/yaf-exception-loadfailed-controller.xml index 8f18a52f6..0677c53d2 100644 --- a/reference/yaf/yaf-exception-loadfailed-controller.xml +++ b/reference/yaf/yaf-exception-loadfailed-controller.xml @@ -1,6 +1,6 @@ - + Yaf_Exception_LoadFailed_Controller 类 @@ -11,9 +11,11 @@
&reftitle.intro; - - - + + 当请求的控制器无法被找到或加载时, + 会抛出 Yaf_Exception_LoadFailed_Controller。 + 它的错误码是 516。 +
@@ -29,7 +31,7 @@ Yaf_Exception_LoadFailed_Controller - + extends Yaf_Exception_LoadFailed @@ -37,9 +39,9 @@ &Properties; - + &Methods; - + &InheritedMethods; @@ -47,7 +49,7 @@ - + diff --git a/reference/yaf/yaf-exception-loadfailed-module.xml b/reference/yaf/yaf-exception-loadfailed-module.xml index d72a18351..c463ad8ad 100644 --- a/reference/yaf/yaf-exception-loadfailed-module.xml +++ b/reference/yaf/yaf-exception-loadfailed-module.xml @@ -1,6 +1,6 @@ - + Yaf_Exception_LoadFailed_Module 类 @@ -11,9 +11,11 @@
&reftitle.intro; - - - + + 当请求的模块无法被找到或加载时, + 会抛出 Yaf_Exception_LoadFailed_Module。 + 它的错误码是 515。 +
@@ -29,7 +31,7 @@ Yaf_Exception_LoadFailed_Module - + extends Yaf_Exception_LoadFailed @@ -38,9 +40,9 @@ &Properties; - + &Methods; - + &InheritedMethods; @@ -49,7 +51,7 @@ - + diff --git a/reference/yaf/yaf-exception-loadfailed-view.xml b/reference/yaf/yaf-exception-loadfailed-view.xml index 39f224ddf..1252098b6 100644 --- a/reference/yaf/yaf-exception-loadfailed-view.xml +++ b/reference/yaf/yaf-exception-loadfailed-view.xml @@ -1,6 +1,6 @@ - + Yaf_Exception_LoadFailed_View 类 @@ -11,9 +11,11 @@
&reftitle.intro; - - - + + 当请求的视图(模板)脚本无法被找到或加载时, + 会抛出 Yaf_Exception_LoadFailed_View。 + 它的错误码是 518。 +
@@ -29,7 +31,7 @@ Yaf_Exception_LoadFailed_View - + extends Yaf_Exception_LoadFailed @@ -38,9 +40,9 @@ &Properties; - + &Methods; - + &InheritedMethods; @@ -49,7 +51,7 @@ - + diff --git a/reference/yaf/yaf-exception-loadfailed.xml b/reference/yaf/yaf-exception-loadfailed.xml index 9c82ed3a1..c446b216e 100644 --- a/reference/yaf/yaf-exception-loadfailed.xml +++ b/reference/yaf/yaf-exception-loadfailed.xml @@ -1,6 +1,6 @@ - + Yaf_Exception_LoadFailed 类 @@ -11,9 +11,16 @@
&reftitle.intro; - - - + + 当自动加载器无法加载所需的脚本时, + 会抛出 Yaf_Exception_LoadFailed。 + 它的错误码是 520。 + 更具体的失败由它的子类 + Yaf_Exception_LoadFailed_Module、 + Yaf_Exception_LoadFailed_Controller、 + Yaf_Exception_LoadFailed_Action 和 + Yaf_Exception_LoadFailed_View 表示。 +
@@ -29,7 +36,7 @@ Yaf_Exception_LoadFailed - + extends Yaf_Exception @@ -39,7 +46,7 @@ &Properties; &Methods; - + &InheritedMethods; @@ -48,7 +55,7 @@ - + diff --git a/reference/yaf/yaf-exception-routerfailed.xml b/reference/yaf/yaf-exception-routerfailed.xml index f3918229e..b288f339c 100644 --- a/reference/yaf/yaf-exception-routerfailed.xml +++ b/reference/yaf/yaf-exception-routerfailed.xml @@ -1,6 +1,6 @@ - + Yaf_Exception_RouterFailed 类 @@ -11,9 +11,11 @@
&reftitle.intro; - - - + + 当路由失败时会抛出 Yaf_Exception_RouterFailed, + 例如没有任何已注册的路由能匹配到来的请求。 + 它的错误码是 513。 +
@@ -29,7 +31,7 @@ Yaf_Exception_RouterFailed - + extends Yaf_Exception @@ -38,9 +40,9 @@ &Properties; - + &Methods; - + &InheritedMethods; @@ -49,7 +51,7 @@ - + diff --git a/reference/yaf/yaf-exception-startuperror.xml b/reference/yaf/yaf-exception-startuperror.xml index 42260c8ef..e6b002389 100644 --- a/reference/yaf/yaf-exception-startuperror.xml +++ b/reference/yaf/yaf-exception-startuperror.xml @@ -1,6 +1,6 @@ - + Yaf_Exception_StartupError 类 @@ -11,9 +11,13 @@
&reftitle.intro; - - - + + 当应用启动失败时会抛出 + Yaf_Exception_StartupError, + 即在路由开始之前, + Yaf_Application 初始化期间发生错误。 + 它的错误码是 512。 +
@@ -29,7 +33,7 @@ Yaf_Exception_StartupError - + extends Yaf_Exception @@ -38,9 +42,9 @@ &Properties; - + &Methods; - + &InheritedMethods; @@ -49,7 +53,7 @@ - + diff --git a/reference/yaf/yaf-exception-typeerror.xml b/reference/yaf/yaf-exception-typeerror.xml index e6d715697..9ca55dfeb 100644 --- a/reference/yaf/yaf-exception-typeerror.xml +++ b/reference/yaf/yaf-exception-typeerror.xml @@ -1,6 +1,6 @@ - + Yaf_Exception_TypeError 类 @@ -11,9 +11,11 @@
&reftitle.intro; - - - + + 当传递给 Yaf 方法的参数类型不符合预期或值无效时,会抛出 + Yaf_Exception_TypeError。 + 它的错误码是 521。 +
@@ -29,7 +31,7 @@ Yaf_Exception_TypeError - + extends Yaf_Exception @@ -38,9 +40,9 @@ &Properties; - + &Methods; - + &InheritedMethods; @@ -49,7 +51,7 @@ - + diff --git a/reference/yaf/yaf-exception.xml b/reference/yaf/yaf-exception.xml index cc0afa05b..e5c23f014 100644 --- a/reference/yaf/yaf-exception.xml +++ b/reference/yaf/yaf-exception.xml @@ -1,6 +1,6 @@ - + Yaf_Exception 类 @@ -11,9 +11,16 @@
&reftitle.intro; - - - + + Yaf_Exception 是 Yaf 抛出的所有异常的基类。 + 其它所有 Yaf 异常类都继承自它。 + + + 当加载了 SPL 扩展时,它继承自 + RuntimeException,否则继承内置的 + Exception。 + Yaf 抛出的异常都带有一个用于标识故障类型的错误码。 +
@@ -29,20 +36,20 @@ Yaf_Exception - + extends - Exception + RuntimeException &InheritedProperties; - + &Methods; - + &InheritedMethods; @@ -51,7 +58,7 @@ - + &reference.yaf.entities.yaf-exception; diff --git a/reference/yaf/yaf-loader.xml b/reference/yaf/yaf-loader.xml index 6ff225951..b52b1a304 100644 --- a/reference/yaf/yaf-loader.xml +++ b/reference/yaf/yaf-loader.xml @@ -1,6 +1,6 @@ - + Yaf_Loader 类 @@ -25,9 +25,9 @@ Off(默认),Yaf_Loader::autoload 将会返回 &true;,更重要的是将会抛出非常有用的警告(对于找出类无法加载的原因非常有用)。 - + 请保持 yaf.use_spl_autoload 为 Off,除非有一些 library 有自己的自动加载机制,并且是无法重写的。 - + @@ -163,10 +163,10 @@ class A_B_TestModel => - + 自 2.1.18 起,Yaf 支持用户脚本端的 Controller 自动加载(这意味着由用户 php 脚本触发自动加载,例如:访问 Bootstrap 或 Plugins 中的控制器静态属性),但自动加载器仅尝试在控制器类脚本下定位默认模块文件夹,即“APPLICATION_PATH/controllers/”。 - + 此外,该目录将受 yaf.lowcase_path 的影响。 diff --git a/reference/yaf/yaf-plugin-abstract.xml b/reference/yaf/yaf-plugin-abstract.xml index 3c167c9a3..46e28983d 100644 --- a/reference/yaf/yaf-plugin-abstract.xml +++ b/reference/yaf/yaf-plugin-abstract.xml @@ -1,6 +1,6 @@ - + Yaf_Plugin_Abstract 类 @@ -11,16 +11,18 @@
&reftitle.intro; - - Plugins 允许轻松地定制和扩展框架。 - - - 插件(Plugin)是类。实际定义的类将会基于组件变化——需要实现这些接口,但该插件(Plugin)本身就是一个类。 - - - 插件(plugin)通过使用 Yaf_Dispatcher::registerPlugin 加载到 Yaf - 中,在框架注册后,插件根据接口实现的所有方法将会在恰当的时间被调用。 - + + 插件(Plugin)使得框架的扩展和定制变得简单。插件是一个继承 + Yaf_Plugin_Abstract + 并覆盖了一个或多个钩子(hook)方法的类,这些钩子方法会在调度周期的固定时点被自动调用: + 路由前后、调度循环(dispatch loop)前后,以及每次单独调度(dispatch)的前后。 + + + 插件通过 Yaf_Dispatcher::registerPlugin + 挂载到调度器上,通常在 Bootstrap 中完成;注册之后,该插件实现的所有钩子方法都会在恰当的时机被调用, + 每个钩子方法都会接收到当前的 Yaf_Request_Abstract 和 + Yaf_Response_Abstract 实例。 +
@@ -42,11 +44,11 @@ /* plugin class should be placed under ./application/plugins/ */ class TestPlugin extends Yaf_Plugin_Abstract { public function routerStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) { - /* 在路由之前执行,这个钩子里,你可以做url重写等功能 */ + /* 在路由之前执行,在这个钩子里,用户可以做一些 URL 重写 */ var_dump("routerStartup"); } public function routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) { - /* 路由完成后,在这个钩子里,你可以做登陆检测等功能*/ + /* 路由完成,在这个钩子里,用户可以做登录检测 */ var_dump("routerShutdown"); } public function dispatchLoopStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) { @@ -59,8 +61,7 @@ var_dump("postDispatch"); } public function dispatchLoopShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) { - /* final hook - in this hook user can do logging or implement layout */ + /* 最后一个钩子,在这个钩子里,用户可以记录日志或实现布局(layout) */ var_dump("dispatchLoopShutdown"); } } @@ -76,7 +77,7 @@ "directory" => dirname(__FILE__) . "/application/", ), ); - + $app = new Yaf_Application($config); $app->bootstrap()->run(); ?> @@ -111,7 +112,7 @@ string(20) "dispatchLoopShutdown"
- + &Methods; diff --git a/reference/yaf/yaf-registry.xml b/reference/yaf/yaf-registry.xml index 3789300be..0b52b20c6 100644 --- a/reference/yaf/yaf-registry.xml +++ b/reference/yaf/yaf-registry.xml @@ -1,6 +1,6 @@ - + Yaf_Registry 类 @@ -11,11 +11,14 @@
&reftitle.intro; - - Yaf_Registry 的所有方法都声明为静态,使其可以随地访问。这提供了根据需要从代码中获取/设置任何自定义数据的能力。 - - 对象注册表(或称对象仓库)是一个用于在整个应用空间(application space)内存储对象和值的容器. 通过把对象存储在其中,我们可以在整个项目的任何地方使用同一个对象。这种机制相当于一种全局存储。另外,由于该类是一个数组对象,你可以使用数组形式来访问其中的类方法。 - + + Yaf_Registry 是一个全局的键值存储。它的所有方法都是静态的, + 因此可以在任何地方访问,并能够根据需要从代码中的任何位置获取或设置任意自定义数据。 + + + 它通常用于保存在 Bootstrap 中初始化的对象(数据库连接、日志记录器、共享配置等), + 使得控制器、动作和插件可以直接获取它们,而无需在代码间层层传递。 +
@@ -43,7 +46,7 @@ _entries - + &Methods; @@ -52,7 +55,7 @@ - +
&reftitle.properties; diff --git a/reference/yaf/yaf-request-abstract.xml b/reference/yaf/yaf-request-abstract.xml index 7f6484360..b88e27619 100644 --- a/reference/yaf/yaf-request-abstract.xml +++ b/reference/yaf/yaf-request-abstract.xml @@ -1,6 +1,6 @@ - + @@ -12,9 +12,16 @@
&reftitle.intro; - - - + + Yaf_Request_Abstract 是请求对象的基类。 + 它封装了请求环境:路由解析出的模块(module)、控制器(controller)和动作(action), + 请求参数,以及访问超全局变量(query 字符串、POST、cookie、server、environment 和上传文件)的方法。 + + + 它有两个具体实现:Yaf_Request_Http, + 由实际的 Web 请求初始化;以及 Yaf_Request_Simple, + 用于测试和 CLI 脚本的模拟请求。 +
@@ -92,7 +99,7 @@ routed - + &Methods; @@ -100,7 +107,7 @@
- +
&reftitle.properties; @@ -175,7 +182,7 @@
- +
&reftitle.constants; diff --git a/reference/yaf/yaf-request-http.xml b/reference/yaf/yaf-request-http.xml index 6aa3c4023..b238eb42f 100644 --- a/reference/yaf/yaf-request-http.xml +++ b/reference/yaf/yaf-request-http.xml @@ -1,6 +1,6 @@ - + The Yaf_Request_Http class @@ -14,16 +14,16 @@ 来自客户端的任何请求都会初始化为 Yaf_Request_Http。可以通过该类的方法获取请求信息,像是 uri query 和 post 参数等。 - + 为了安全,$_GET/$_POST 在 Yaf 中为只读,这意味着如果在全局变量中设置了值,将无法从 Yaf_Request_Http::getQueryYaf_Request_Http::getPost 获取。 - - + + 但确实有些用途需要这些功能,比如单元测试。因此 Yaf 可以使用 --enable-yaf-debug 编译,这将允许 Yaf 通过脚本读取用户设置的值。 - - + + 在这种情况下,Yaf 将会抛出 E_STRICT 警告来提醒:正在调试模式下运行 yaf。 - +
@@ -53,8 +53,7 @@ &Methods; - - + &InheritedMethods; diff --git a/reference/yaf/yaf-request-simple.xml b/reference/yaf/yaf-request-simple.xml index 6d30bd18d..95cf6be82 100644 --- a/reference/yaf/yaf-request-simple.xml +++ b/reference/yaf/yaf-request-simple.xml @@ -1,7 +1,6 @@ - - + Yaf_Request_Simple 类 @@ -56,8 +55,7 @@ &Methods; - - + &InheritedMethods; diff --git a/reference/yaf/yaf-response-abstract.xml b/reference/yaf/yaf-response-abstract.xml index 5387d3cd4..fb9987ed4 100644 --- a/reference/yaf/yaf-response-abstract.xml +++ b/reference/yaf/yaf-response-abstract.xml @@ -1,6 +1,6 @@ - + @@ -12,9 +12,18 @@
&reftitle.intro; - - - + + Yaf_Response_Abstract 是响应对象的基类, + 它携带要发送给客户端的头部(header)和内容块(content)。 + 它由 Yaf_Dispatcher 实例化; + 通过 Yaf_Dispatcher::getResponse 来访问, + 通常在控制器、动作或插件中使用。 + + + 具体的子类是 Yaf_Response_Http + (用于 Web SAPI,会实际发送 HTTP 头部)和 + Yaf_Response_Cli(用于命令行)。 +
@@ -33,12 +42,12 @@ &Constants; - - const - string - Yaf_Response_Abstract::DEFAULT_BODY - "content" - + + const + string + Yaf_Response_Abstract::DEFAULT_BODY + "content" + &Properties; @@ -54,17 +63,16 @@ _sendheader - + &Methods; - - +
&reftitle.properties; @@ -72,19 +80,30 @@ _header - + + 目前已设置的 HTTP 头部,以头部名/值对的数组形式存储。 + 仅对 Yaf_Response_Http 有意义。 + _body - + + 内容块,以内容键(content key)为索引(默认为 + content,即 + Yaf_Response_Abstract::DEFAULT_BODY)。 + _sendheader - + + 头部是否应与内容一起发送。在 + Yaf_Response_Http 中, + 它还记录头部是否已经发送。 + diff --git a/reference/yaf/yaf-response-cli.xml b/reference/yaf/yaf-response-cli.xml index f5eeaa17e..6e438edc1 100644 --- a/reference/yaf/yaf-response-cli.xml +++ b/reference/yaf/yaf-response-cli.xml @@ -1,6 +1,6 @@ - + Yaf_Response_Cli 类 @@ -11,9 +11,11 @@
&reftitle.intro; - - - + + Yaf_Response_Cli 是用于命令行(CLI)请求的响应适配器。 + 与它的 HTTP 对应类不同,它不发送头部,只是累积响应体(response body), + 并在调度周期完成后直接输出。 +
@@ -29,7 +31,7 @@ Yaf_Response_Cli - + extends Yaf_Response_Abstract @@ -38,10 +40,7 @@ &Properties; - - &Methods; - - + &InheritedMethods; @@ -50,7 +49,7 @@
- +
&reftitle.properties; @@ -80,8 +79,6 @@ - &reference.yaf.entities.yaf-response-cli; - - + Yaf_Response_Http 类 @@ -11,9 +11,11 @@
&reftitle.intro; - - - + + Yaf_Response_Http 是用于 Web 请求的响应适配器。 + 它累积在调度周期中设置的头部和响应体,并在调度完成时发送给客户端, + 除非启用了 Yaf_Dispatcher::returnResponse。 +
@@ -29,7 +31,7 @@ Yaf_Response_Http - + extends Yaf_Response_Abstract @@ -46,10 +48,7 @@ _response_code - - &Methods; - - + &InheritedMethods; @@ -58,7 +57,7 @@
- +
&reftitle.properties; @@ -94,8 +93,6 @@ - &reference.yaf.entities.yaf-response-http; - - + Yaf_Route_Interface 类 @@ -11,9 +11,24 @@
&reftitle.intro; - - Yaf_Route_Interface 是 Yaf 路由协议的标准接口, 它的存在使得开发者可以自定义路由协议 - + + Yaf_Route_Interface 定义了所有路由必须实现的契约: + Yaf_Route_Interface::route, + 它检查请求并通过设置模块(module)、控制器(controller)和动作(action) + (以及可选的请求参数)来接管该请求;以及 + Yaf_Route_Interface::assemble, + 它根据路由信息构建 URL。 + + + 实现此接口可以定义自定义路由,并通过 + Yaf_Router::addRoute 将其注册到路由器上。 + 内置路由类(Yaf_Route_Static、 + Yaf_Route_Simple、 + Yaf_Route_Supervar、 + Yaf_Route_Rewrite、 + Yaf_Route_Regex 和 + Yaf_Route_Map)都实现了此接口。 +
@@ -31,7 +46,7 @@ - + &Methods; diff --git a/reference/yaf/yaf-route-map.xml b/reference/yaf/yaf-route-map.xml index 16e15660e..a9f8de757 100644 --- a/reference/yaf/yaf-route-map.xml +++ b/reference/yaf/yaf-route-map.xml @@ -1,6 +1,6 @@ - + Yaf_Route_Map 类 @@ -11,19 +11,27 @@
&reftitle.intro; - - Yaf_Route_Map 是内置路由,它只是将 URI 端点(位于基础 URI 之后的 URI 部分:参阅 - Yaf_Request_Abstract::setBaseUri)转换为 controller 名或 action 名(取决于传递给 - Yaf_Route_Map::__construct 的参数),遵循以下规则: - A => controller A。 - A/B/C => controller A_B_C。 - A/B/C/D/E => controller A_B_C_D_E。 - - - - 如果指定 Yaf_Route_Map::__construct 的第二个参数,则只有 URI 之前的部分用于路由,URI - 之后的部分用于路由请求参数(参考 Yaf_Route_Map::__construct 的示例部分)。 - + + Yaf_Route_Map 是内置路由,它将整个 URI 端点 + (位于基础 URI 之后的 URI 部分:参阅 + Yaf_Request_Abstract::setBaseUri) + 转换为单个 controller 名或 action 名,取决于传递给 + Yaf_Route_Map::__construct 的第一个参数。 + 路径各段以下划线连接: + + + A => A + A/B/C => A_B_C + A/B/C/D/E => A_B_C_D_E + + + 当映射目标是 controller 名时,其首字母会被转为大写。 + + + 如果指定了 Yaf_Route_Map::__construct 的第二个参数, + 则只有分隔符之前的 URI 部分用于路由,分隔符之后的部分会被解析为请求参数 + (参考 Yaf_Route_Map::__construct 的示例部分)。 +
@@ -39,7 +47,7 @@ Yaf_Route_Map - + Yaf_Route_Interface @@ -55,7 +63,7 @@ _delimiter - + &Methods; @@ -64,7 +72,7 @@
- +
&reftitle.properties; diff --git a/reference/yaf/yaf-route-regex.xml b/reference/yaf/yaf-route-regex.xml index 11ff6b747..3940bac93 100644 --- a/reference/yaf/yaf-route-regex.xml +++ b/reference/yaf/yaf-route-regex.xml @@ -1,6 +1,6 @@ - + Yaf_Route_Regex 类 @@ -11,9 +11,17 @@
&reftitle.intro; - - Yaf_Route_Regex 是 Yaf 内置的路由中最灵活的。 - + + Yaf_Route_Regex 是 Yaf 内置路由中最灵活的: + 它将请求 URI 与一个正则表达式进行匹配。当模式匹配成功时, + 使用默认的模块(module)、控制器(controller)和动作(action), + 捕获的子模式则通过数字映射赋给请求参数。 + + + 它与 Yaf_Route_Rewrite 类似, + 但接受的不是便于人类阅读的模式,而是完整的 PCRE 模式, + 这使得它能够表达其它内置路由无法表达的匹配规则。 +
@@ -29,12 +37,12 @@ Yaf_Route_Regex - + extends Yaf_Route_Interface - + Yaf_Route_Interface @@ -58,11 +66,11 @@ _verify - + &Methods; - + &InheritedMethods; @@ -71,7 +79,7 @@
- +
&reftitle.properties; diff --git a/reference/yaf/yaf-route-rewrite.xml b/reference/yaf/yaf-route-rewrite.xml index 8cdfae3e6..324a3a042 100644 --- a/reference/yaf/yaf-route-rewrite.xml +++ b/reference/yaf/yaf-route-rewrite.xml @@ -1,6 +1,6 @@ - + Yaf_Route_Rewrite 类 @@ -11,9 +11,15 @@
&reftitle.intro; - - 用法请看 Yaf_Route_Rewrite::__construct 的示例部分 - + + Yaf_Route_Rewrite 是内置路由, + 它将固定的路径模式映射到模块(module)、控制器(controller)和动作(action)。 + 模式中可以包含命名占位符(:name,其值会被设置为请求参数), + 以及结尾的 * 通配符,用于将剩余的路径段捕获为键/值对。 + + + 用法请参考 Yaf_Route_Rewrite::__construct 的示例部分。 +
@@ -29,12 +35,12 @@ Yaf_Route_Rewrite - + extends Yaf_Route_Interface - + Yaf_Route_Interface @@ -54,11 +60,11 @@ _verify - + &Methods; - + &InheritedMethods; @@ -67,7 +73,7 @@
- +
&reftitle.properties; diff --git a/reference/yaf/yaf-route-simple.xml b/reference/yaf/yaf-route-simple.xml index eaaeba325..e5844eefa 100644 --- a/reference/yaf/yaf-route-simple.xml +++ b/reference/yaf/yaf-route-simple.xml @@ -1,6 +1,6 @@ - + Yaf_Route_Simple 类 @@ -11,16 +11,17 @@
&reftitle.intro; - - Yaf_Route_Simple 会匹配 query 字符串,然后找到路由信息。 - - - 需要做的只是告诉 Yaf_Route_Simple,在 $_GET 中哪个键是 Module,哪个键是 Controller,哪个键是 Action。 - - - Yaf_Route_Simple::route 始终返回 &true;,所以把 Yaf_Route_Simple - 放在路由栈前面很重要,否则不会调用所有其它路由。 - + + Yaf_Route_Simple 从 query 字符串中解析路由信息。 + 需要做的只是告诉 Yaf_Route_Simple, + $_GET 中哪个键是模块(module),哪个键是控制器(controller),哪个键是动作(action)。 + + + 只要 query 字符串中存在这些键中的至少一个, + Yaf_Route_Simple::route 就会接管该请求(返回 &true;), + 因此对于这类请求,不会尝试路由栈中在它之后注册的路由。 + 只有当所有已配置的键都不存在时,它才会放行(返回 &false;)。 +
@@ -36,7 +37,7 @@ Yaf_Route_Simple - + Yaf_Route_Interface @@ -56,7 +57,7 @@ action - + &Methods; @@ -65,7 +66,7 @@
- +
&reftitle.properties; diff --git a/reference/yaf/yaf-route-static.xml b/reference/yaf/yaf-route-static.xml index ef0b47a9e..30039c2d9 100644 --- a/reference/yaf/yaf-route-static.xml +++ b/reference/yaf/yaf-route-static.xml @@ -1,6 +1,6 @@ - + Yaf_Route_Static 类 @@ -11,16 +11,19 @@
&reftitle.intro; - - 默认的情况下,Yaf_Router 只将 Yaf_Route_Static 作为默认路由。 - - - Yaf_Route_Static 旨在处理 80% 的需求。 - - - 请注意:没有必要实例化 Yaf_Route_Static,也没必要将其加入到 Yaf_Router - 的路由栈,因为在 Yaf_Router 的路由堆栈中始终存在它的实例,并且总是在最后调用。 - + + Yaf_Route_Static 是 + Yaf_Router 的默认路由: + 它将 URI 路径解析为 /module/controller/action 各段, + 设计上开箱即用地处理绝大多数路由需求。 + + + + 没有必要实例化 Yaf_Route_Static, + 也没有必要将其加入 Yaf_Router 的路由栈: + 路由栈中始终存在它的实例,并且总是在最后被尝试。 + +
@@ -36,13 +39,13 @@ Yaf_Route_Static - + Yaf_Router - + &Methods; diff --git a/reference/yaf/yaf-route-supervar.xml b/reference/yaf/yaf-route-supervar.xml index d7bfe95c7..fedc20e9f 100644 --- a/reference/yaf/yaf-route-supervar.xml +++ b/reference/yaf/yaf-route-supervar.xml @@ -1,6 +1,6 @@ - + Yaf_Route_Supervar 类 @@ -11,9 +11,14 @@
&reftitle.intro; - - - + + Yaf_Route_Supervar 是内置路由, + 它从单个 GET 参数(supervar)中解析请求目标。 + 该参数的值会像 PATH_INFO 一样被解析, + 因此当 supervar 名为 r 时, + 形如 /?r=/user/list 的请求会映射到控制器 + user 和动作 list。 +
@@ -29,7 +34,7 @@ Yaf_Route_Supervar - + Yaf_Route_Interface @@ -41,7 +46,7 @@ _var_name - + &Methods; @@ -50,7 +55,7 @@
- +
&reftitle.properties; diff --git a/reference/yaf/yaf-router.xml b/reference/yaf/yaf-router.xml index 1fda394e7..67ec3f1be 100644 --- a/reference/yaf/yaf-router.xml +++ b/reference/yaf/yaf-router.xml @@ -1,6 +1,6 @@ - + Yaf_Router 类 @@ -86,10 +86,10 @@ server { 的形式匹配 URI。此外,module 名可以被指定为第一个路径元素,允许 URI 设置为 module/controller/action 形式的 URI。最后,它也会匹配默认追加到 URI 中所有附加参数——controller/action/var1/value1/var2/value2。 - + Module 名必须在配置中定义,就 application.module="Index,Foo,Bar" 而言,在这种情况下,仅 index、foo 和 bar 可以认做 module 名。如果没有配置,那么 Yaf 使用默认 module 名“Index”。 - + diff --git a/reference/yaf/yaf-session.xml b/reference/yaf/yaf-session.xml index 85d9f21c3..33b9aafaa 100644 --- a/reference/yaf/yaf-session.xml +++ b/reference/yaf/yaf-session.xml @@ -1,6 +1,6 @@ - + Yaf_Session 类 @@ -11,9 +11,21 @@
&reftitle.intro; - - - + + Yaf_Session 是对 PHP 原生 session 支持的带命名空间的封装。 + 它通过 Yaf_Session::getInstance 以单例方式访问, + 并直接作用于 $_SESSION: + 通过任一接口写入的 session 数据在另一接口中同样可见。 + + + Session 项可以通过属性语法、方法调用 + (Yaf_Session::get、 + Yaf_Session::set、 + Yaf_Session::del、 + Yaf_Session::has)、数组访问 + (ArrayAccess)、迭代 + (Iterator)以及 count() 来访问和操作。 +
@@ -29,7 +41,7 @@ Yaf_Session - + Iterator @@ -58,7 +70,7 @@ _started - + &Methods; @@ -67,7 +79,7 @@
- +
&reftitle.properties; diff --git a/reference/yaf/yaf-view-interface.xml b/reference/yaf/yaf-view-interface.xml index fcb8918df..4e962e43c 100644 --- a/reference/yaf/yaf-view-interface.xml +++ b/reference/yaf/yaf-view-interface.xml @@ -1,6 +1,6 @@ - + Yaf_View_Interface 类 diff --git a/reference/yaf/yaf-view-simple.xml b/reference/yaf/yaf-view-simple.xml index 770486890..1ed63597e 100644 --- a/reference/yaf/yaf-view-simple.xml +++ b/reference/yaf/yaf-view-simple.xml @@ -1,6 +1,6 @@ - + Yaf_View_Simple 类 diff --git a/reference/yaf/yaf_action_abstract/execute.xml b/reference/yaf/yaf_action_abstract/execute.xml index 394abac42..8ffd1929f 100644 --- a/reference/yaf/yaf_action_abstract/execute.xml +++ b/reference/yaf/yaf_action_abstract/execute.xml @@ -1,6 +1,6 @@ - + Yaf_Action_Abstract::execute @@ -14,11 +14,12 @@ mixedargs - 用户应该始终为动作定义此方法,这是动作的入口点。Yaf_Action_Abstract::execute 可能会有参数。 + 用户应该始终为动作定义此方法,这是动作的入口点。 + Yaf_Action_Abstract::execute 可能会有参数。 - - 从请求中获取值不安全,在使用之前需要对其过滤。 - + + 从请求中获取的值并不安全,在使用之前应当先做一些过滤工作。 + @@ -39,9 +40,9 @@ &reftitle.returnvalues; - - - + + 动作方法的返回值不会被 Yaf 使用;输出会被直接写入或由视图引擎收集。 + @@ -51,7 +52,7 @@ &reftitle.seealso; - + Yaf_Request_Abstract::getParam + Yaf_Controller_Abstract::forward diff --git a/reference/yaf/yaf_action_abstract/getcontroller.xml b/reference/yaf/yaf_action_abstract/getcontroller.xml index 07f08eb0a..703dbcfc4 100644 --- a/reference/yaf/yaf_action_abstract/getcontroller.xml +++ b/reference/yaf/yaf_action_abstract/getcontroller.xml @@ -1,21 +1,21 @@ - + Yaf_Action_Abstract::getController - 检索控制器对象 + 获取控制器对象 &reftitle.description; - publicYaf_Controller_AbstractYaf_Action_Abstract::getController + publicYaf_Controller_AbstractnullYaf_Action_Abstract::getController - - 检索当前控制器对象。 - + + 获取拥有此动作的控制器。 + @@ -25,12 +25,52 @@ &reftitle.returnvalues; + + 返回 Yaf_Controller_Abstract 实例, + 如果没有可用的控制器则返回 &null;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Action_Abstract::getController</methodname> 示例 + +getController(); + var_dump($controller instanceof Yaf_Controller_Abstract); + + // 例如:访问它的视图引擎 + $controller->getView()->assign("products", array("yaf", "php")); + } +} +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; - Yaf_Controller_Abstract 实例 + + Yaf_Action_Abstract::getControllerName + Yaf_Controller_Abstract + - + + + + Yaf_Action_Abstract::getControllerName + 获取控制器名称 + + + + &reftitle.description; + + public stringnullYaf_Action_Abstract::getControllerName + + + + 返回拥有此 action 的控制器名称。 + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + 返回 &string; 类型的控制器名称,如果未设置则返回 &null;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Action_Abstract::getControllerName</methodname> 示例 + +getControllerName()); + } +} +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + + Yaf_Action_Abstract::getController + Yaf_Controller_Abstract::getName + + + + + + + diff --git a/reference/yaf/yaf_application/app.xml b/reference/yaf/yaf_application/app.xml index 346241d9c..25ee6b8d8 100644 --- a/reference/yaf/yaf_application/app.xml +++ b/reference/yaf/yaf_application/app.xml @@ -1,6 +1,6 @@ - + @@ -11,13 +11,13 @@ &reftitle.description; - public static mixedYaf_Application::app + public static Yaf_ApplicationnullYaf_Application::app - - 检索 Yaf_Application 实例。也可以使用 Yaf_Dispatcher::getApplication。 - - + + 检索 Yaf_Application 实例。 + 也可以使用 Yaf_Dispatcher::getApplication。 + @@ -27,16 +27,65 @@ &reftitle.returnvalues; - - Yaf_Application 实例,Yaf_Application 没有初始化之前,返回 &null;。 - + + 返回 Yaf_Application 实例, + 如果还没有初始化过应用则返回 &null;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Application::app</methodname> 示例 + +bootstrap()->run(); +?> +]]> + + + + 在其它地方获取应用实例 + +environ()); + var_dump(Yaf_Application::getInstance() === $app); + + return false; + } +} +?> +]]> + + &example.outputs.similar; + + + + &reftitle.seealso; - - Yaf_Dispatcher::getApplication - + + + Yaf_Dispatcher::getApplication + + diff --git a/reference/yaf/yaf_application/bootstrap.xml b/reference/yaf/yaf_application/bootstrap.xml index 40602359b..b08c3602a 100644 --- a/reference/yaf/yaf_application/bootstrap.xml +++ b/reference/yaf/yaf_application/bootstrap.xml @@ -1,6 +1,6 @@ - + @@ -11,35 +11,44 @@ &reftitle.description; - public voidYaf_Application::bootstrap - Yaf_Bootstrap_Abstractbootstrap + public Yaf_ApplicationfalseYaf_Application::bootstrap + - - 运行 Bootstrap,所有在 Bootstrap 中定义并以“_init”前缀命名的方法都将按照声明的顺序调用,如果没有提供参数 - bootstrap,Yaf 将在 application.directory 下寻找 Bootstrap。 - - + + 运行 Bootstrap。Bootstrap 类中所有名称以 _init + 开头的公共方法都会按照声明的顺序被调用,每个方法都接收 + Yaf_Dispatcher 实例作为唯一参数。 + + + Bootstrap 类必须命名为 Bootstrap 并继承 + Yaf_Bootstrap_Abstract。如果该类尚未定义, + 则会从应用目录下的 Bootstrap.php 加载; + application.bootstrap 配置项可以覆盖其位置。 + &reftitle.parameters; - - - bootstrap - - - Yaf_Bootstrap_Abstract 实例 - - - - + &no.function.parameters; &reftitle.returnvalues; - - Yaf_Application 实例 - + + 成功时返回 Yaf_Application 对象本身, + 失败时返回 &false;(例如无法加载 Bootstrap 类, + 或者某个 _init* 方法抛出了未捕获的异常)。 + + + + + &reftitle.errors; + + 如果找到的类不是 Yaf_Bootstrap_Abstract + 的子类,会触发 YAF_ERR_TYPE_ERROR 错误; + 如果找不到 bootstrap 文件或 Bootstrap 类, + 会触发一个 E_WARNING。 + @@ -50,15 +59,16 @@ bootstrap(); &reftitle.seealso; - - Yaf_Bootstrap_Abstract - + + + Yaf_Bootstrap_Abstract + Yaf_Application::run + + diff --git a/reference/yaf/yaf_application/clearlasterror.xml b/reference/yaf/yaf_application/clearlasterror.xml index 89f54444f..54e5b0186 100644 --- a/reference/yaf/yaf_application/clearlasterror.xml +++ b/reference/yaf/yaf_application/clearlasterror.xml @@ -1,6 +1,6 @@ - + Yaf_Application::clearLastError @@ -10,15 +10,14 @@ &reftitle.description; - public Yaf_ApplicationYaf_Application::clearLastError + public Yaf_ApplicationnullYaf_Application::clearLastError - - - - - - + + 清除最后一次错误的代码和信息,将其重置为 + 0 和空字符串。这在错误处理器中很有用, + 已处理的错误不应该被再次报告。 + @@ -28,9 +27,10 @@ &reftitle.returnvalues; - - - + + 成功时返回 Yaf_Application 对象本身, + 如果应用没有正确初始化则返回 &null;。 + @@ -44,16 +44,16 @@ function error_handler($errno, $errstr, $errfile, $errline) { Yaf_Application::app()->clearLastError(); var_dump(Yaf_Application::app()->getLastErrorNo()); } - -$config = array( + +$config = array( "application" => array( "directory" => "/tmp/notexists", "dispatcher" => array( - "throwException" => 0, //trigger error instead of throw exception when error occure + "throwException" => 0, //trigger error instead of throwing an exception when an error occurs ), ), ); - + $app = new Yaf_Application($config); $app->getDispatcher()->setErrorHandler("error_handler", E_RECOVERABLE_ERROR); $app->run(); @@ -69,6 +69,16 @@ int(0) + + &reftitle.seealso; + + + Yaf_Application::getLastErrorNo + Yaf_Application::getLastErrorMsg + + + + - + @@ -12,15 +12,14 @@ &reftitle.description; public Yaf_Application::__construct - mixedconfig - stringenvrion + stringarrayconfig + stringnullenvironnull - - 初始化一个 Yaf_Application. - - - - + + 实例化一个 Yaf_Application。构造函数同时会初始化 + 单例应用、Yaf_Loader 和 + Yaf_Dispatcher,因此在使用它们之前必须先调用构造函数。 + @@ -29,48 +28,46 @@ config + + INI 配置文件的路径,或者配置数组。 + + + 如果是 INI 配置文件,其中应该有一个以 + yaf.environ 定义的名称命名的配置节, + 默认是 "product"。 + + + 应用程序配置项(及其默认值)在 + 应用程序配置中有说明: + - 关联数组的配置, 或者一个指向 ini 格式的配置文件的路径的字符串。 - - - 如果是一个 ini 配置文件,那配置文件中应该有一个定义了 yaf.environ - 的配置节。这个在生产环境中是默认的。 - - - 如果你使用了 ini 配置文件作为你应用配置的容器,你需要打开 yaf.cache_config - 来提升性能。 - - - - - And the config entry(and there default value) list blow: - A ini config file example + INI 配置文件示例 @@ -80,19 +77,24 @@ ap.modules=Index environ - - Which section will be loaded as the final config - + + 指定哪个配置节将作为最终配置被加载。如果未提供, + 则使用 yaf.environ + 指令的值。 + - - &reftitle.returnvalues; - - - + + &reftitle.errors; + + 如果 Yaf_Application 已经被实例化,或者配置无效, + 将抛出 Yaf_Exception_StartupError 异常 + (当 Yaf_Dispatcher::throwException 关闭时, + 则触发 YAF_ERR_STARTUP_FAILED 错误)。 + @@ -102,7 +104,7 @@ ap.modules=Index bootstrap()->run(); ?> ]]> - &example.outputs.similar; - - - <function>Yaf_Application::__construct</function> 示例 @@ -133,19 +130,17 @@ $application->bootstrap()->run(); ?> ]]> - &example.outputs.similar; - - - &reftitle.seealso; - - Yaf_Config_Ini - + + + Yaf_Config_Ini + 应用程序配置 + + diff --git a/reference/yaf/yaf_application/destruct.xml b/reference/yaf/yaf_application/destruct.xml deleted file mode 100644 index f90be2891..000000000 --- a/reference/yaf/yaf_application/destruct.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Yaf_Application::__destruct - __destruct 函数 - - - - &reftitle.description; - - public Yaf_Application::__destruct - - - - - - - - - - - - &reftitle.parameters; - &no.function.parameters; - - - - &reftitle.returnvalues; - - - - - - - - - diff --git a/reference/yaf/yaf_application/environ.xml b/reference/yaf/yaf_application/environ.xml index e857d49d5..9421158ec 100644 --- a/reference/yaf/yaf_application/environ.xml +++ b/reference/yaf/yaf_application/environ.xml @@ -1,6 +1,6 @@ - + Yaf_Application::environ @@ -10,15 +10,14 @@ &reftitle.description; - public voidYaf_Application::environ + public stringnullYaf_Application::environ - - 返回在 yaf.environ 定义的环境值,默认值为“product”。 - - - - + + 返回应用的环境名,它由 yaf.environ + 指令(或构造函数的 environ 参数)定义,默认值为 + "product"。 + @@ -28,9 +27,9 @@ &reftitle.returnvalues; - - - + + 应用的环境名。 + diff --git a/reference/yaf/yaf_application/execute.xml b/reference/yaf/yaf_application/execute.xml index 53684c69c..2ee3f3549 100644 --- a/reference/yaf/yaf_application/execute.xml +++ b/reference/yaf/yaf_application/execute.xml @@ -1,6 +1,6 @@ - + Yaf_Application::execute @@ -10,33 +10,33 @@ &reftitle.description; - public voidYaf_Application::execute - callableentry - stringargs + public mixedYaf_Application::execute + callablecallback + mixedargs - - 这个方法通常用于在 cron 任务中运行 Yaf_Application。 - 在 cron 任务中也可以使用 autoloader 和 Bootstrap 机制。 - + + 运行一个回调。这个方法通常用于在 cron 任务或其他 CLI 脚本中运行 + Yaf,使脚本可以重用 autoloader 和 bootstrap 机制。 + &reftitle.parameters; - entry + callback - - 一个有效的回调函数 - + + 一个有效的回调函数。 + - ... + args - - 要传递给函数的参数 - + + 传递给回调函数的可选参数。 + @@ -44,9 +44,9 @@ &reftitle.returnvalues; - - - + + 返回回调函数的返回值,如果调用回调失败则返回 &false;。 + @@ -57,6 +57,8 @@ execute("main", $argc, $argv); +$application->execute("main", $argc, $argv); ?> ]]> &example.outputs.similar; + string(11) "execute.php" + [1]=> + string(3) "arg" +} ]]> + + &reftitle.seealso; + + + Yaf_Application::bootstrap + + + + - + Yaf_Application::getAppDirectory @@ -10,38 +10,65 @@ &reftitle.description; - public Yaf_ApplicationYaf_Application::getAppDirectory + public stringnullYaf_Application::getAppDirectory - - - - - - + + 获取应用目录,Yaf 在该目录下查找控制器、视图和模块。 + 它由 application.directory 配置项,或者 + Yaf_Application::setAppDirectory 设置。 + &reftitle.parameters; - - - directory - - - - - - - + &no.function.parameters; &reftitle.returnvalues; - + + 应用目录的绝对路径,如果应用没有正确初始化则返回 &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Application::getAppDirectory</methodname> 示例 + +getAppDirectory()); +var_dump(Yaf_Application::app()->getAppDirectory()); +?> +]]> + + &example.outputs.similar; + + + + + + &reftitle.seealso; + + + Yaf_Application::setAppDirectory + + + diff --git a/reference/yaf/yaf_application/getconfig.xml b/reference/yaf/yaf_application/getconfig.xml index 1c4b2627a..a85501d3f 100644 --- a/reference/yaf/yaf_application/getconfig.xml +++ b/reference/yaf/yaf_application/getconfig.xml @@ -1,24 +1,22 @@ - + Yaf_Application::getConfig - 获取 Yaf_Config_Abstract 的实例 + 获取配置实例 &reftitle.description; - public Yaf_Config_AbstractYaf_Application::getConfig + public Yaf_Config_AbstractnullYaf_Application::getConfig - - - - - - + + 获取保存传递给构造函数的应用配置的 + Yaf_Config_Abstract 实例。 + @@ -28,9 +26,11 @@ &reftitle.returnvalues; - - Yaf_Config_Abstract 的实例 - + + Yaf_Config_Abstract 实例(当构造函数传入数组时, + 为 Yaf_Config_Simple 对象;当传入 INI 文件时, + 为 Yaf_Config_Ini 对象),失败时返回 &null;。 + @@ -73,7 +73,6 @@ Yaf_Config_Simple Object - - + Yaf_Application::getDispatcher @@ -10,15 +10,12 @@ &reftitle.description; - public Yaf_DispatcherYaf_Application::getDispatcher + public Yaf_DispatchernullYaf_Application::getDispatcher - - - - - - + + 获取该应用使用的 Yaf_Dispatcher 实例。 + @@ -28,9 +25,10 @@ &reftitle.returnvalues; - - - + + Yaf_Dispatcher 实例,如果应用没有正确初始化 + 则返回 &null;。 + @@ -73,20 +71,7 @@ Yaf_Dispatcher Object [_view:protected] => [_request:protected] => Yaf_Request_Http Object ( - [module] => - [controller] => - [action] => [method] => Cli - [params:protected] => Array - ( - ) - - [language:protected] => - [_exception:protected] => - [_base_uri:protected] => - [uri:protected] => - [dispatched:protected] => - [routed:protected] => ) [_plugins:protected] => Array @@ -95,27 +80,16 @@ Yaf_Dispatcher Object [_auto_render:protected] => 1 [_return_response:protected] => - [_instantly_flush:protected] => + [_instantly_flush:protected] => 1 [_default_module:protected] => Index [_default_controller:protected] => Index [_default_action:protected] => index - [_response] => Yaf_Response_Cli Object - ( - [_header:protected] => Array - ( - ) - - [_body:protected] => - [_sendheader:protected] => - ) - ) ]]> - - + Yaf_Application::getLastErrorMsg @@ -10,15 +10,12 @@ &reftitle.description; - public stringYaf_Application::getLastErrorMsg + public stringnullYaf_Application::getLastErrorMsg - - - - - - + + 获取分发过程中最后发生的错误的信息。 + @@ -28,9 +25,10 @@ &reftitle.returnvalues; - - - + + 最后发生的错误的错误信息,如果尚未发生错误则为空字符串, + 如果应用没有正确初始化则返回 &null;。 + @@ -44,11 +42,11 @@ function error_handler($errno, $errstr, $errfile, $errline) { var_dump(Yaf_Application::app()->getLastErrorMsg()); } -$config = array( +$config = array( "application" => array( "directory" => "/tmp/notexists", "dispatcher" => array( - "throwException" => 0, //trigger error instead of throw exception when error occure + "throwException" => 0, //发生错误时触发错误而不是抛出异常 ), ), ); @@ -68,6 +66,16 @@ string(69) "Could not find controller script /tmp/notexists/controllers/Index.ph + + &reftitle.seealso; + + + Yaf_Application::getLastErrorNo + Yaf_Application::clearLastError + + + + - + Yaf_Application::getLastErrorNo @@ -10,15 +10,13 @@ &reftitle.description; - public intYaf_Application::getLastErrorNo + public intnullYaf_Application::getLastErrorNo - - - - - - + + 获取分发过程中最后发生的错误的错误代码, + 它是 YAF_ERR_* 常量之一。 + @@ -28,10 +26,12 @@ &reftitle.returnvalues; - - - + + 最后发生的错误的错误代码,如果尚未发生错误则为 0, + 如果应用没有正确初始化则返回 &null;。 + + &reftitle.examples; @@ -48,7 +48,7 @@ $config = array( "application" => array( "directory" => "/tmp/notexists", "dispatcher" => array( - "throwException" => 0, //trigger error instead of throw exception when error occure + "throwException" => 0, //发生错误时触发错误而不是抛出异常 ), ), ); @@ -69,7 +69,6 @@ bool(true) - - + Yaf_Application::getModules @@ -10,15 +10,14 @@ &reftitle.description; - public arrayYaf_Application::getModules + public arraynullYaf_Application::getModules - - 获取在配置文件中声明的模块名,如果没有声明,它的默认值将是“Index”。 - - - - + + 获取在 application.modules + 配置项中定义的模块名。如果没有定义,则始终有一个名为 + "Index" 的模块。 + @@ -28,9 +27,9 @@ &reftitle.returnvalues; - - - + + 模块名数组,如果应用没有正确初始化则返回 &null;。 + diff --git a/reference/yaf/yaf_application/run.xml b/reference/yaf/yaf_application/run.xml index 9a1e16136..4778b800e 100644 --- a/reference/yaf/yaf_application/run.xml +++ b/reference/yaf/yaf_application/run.xml @@ -1,6 +1,6 @@ - + Yaf_Application::run @@ -10,12 +10,14 @@ &reftitle.description; - public voidYaf_Application::run + public Yaf_Response_AbstractfalseYaf_Application::run - - 运行一个 Yaf_Application,开始接受并处理请求,分发路由,做出相应的响应。最终将响应返回给客户端。 - + + 运行 Yaf_Application,让 + Yaf_Application 接受一个请求,对该请求进行路由, + 分发到相应的控制器/动作,并渲染响应。最终,将响应返回给客户端。 + @@ -25,8 +27,45 @@ &reftitle.returnvalues; - + + 成功时返回 Yaf_Response_Abstract 对象, + 失败时(例如应用已经在运行)返回 &false;。 + + + + + &reftitle.errors; + + 如果应用已经启动过,则触发 + YAF_ERR_STARTUP_FAILED 错误。 + + + + + &reftitle.examples; + + <function>Yaf_Application::run</function> 示例 + +bootstrap()->run(); +?> +]]> + + + + + + &reftitle.seealso; + + + Yaf_Application::bootstrap + Yaf_Dispatcher::dispatch + diff --git a/reference/yaf/yaf_application/setappdirectory.xml b/reference/yaf/yaf_application/setappdirectory.xml index 4cd2a106d..df0e6198e 100644 --- a/reference/yaf/yaf_application/setappdirectory.xml +++ b/reference/yaf/yaf_application/setappdirectory.xml @@ -1,6 +1,6 @@ - + Yaf_Application::setAppDirectory @@ -10,15 +10,13 @@ &reftitle.description; - public Yaf_ApplicationYaf_Application::setAppDirectory + public Yaf_ApplicationnullfalseYaf_Application::setAppDirectory stringdirectory - - - - - - + + 改变应用目录,Yaf 在该目录下查找控制器、视图和模块。 + 新目录必须是绝对路径。 + @@ -27,9 +25,9 @@ directory - - - + + 新应用目录的绝对路径。 + @@ -37,11 +35,53 @@ &reftitle.returnvalues; - + + 成功时返回 Yaf_Application 对象本身, + 如果 directory 为空或不是绝对路径则返回 &false;, + 如果应用没有正确初始化则返回 &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Application::setAppDirectory</methodname> 示例 + +setAppDirectory("/srv/legacy/mvc/app")); +var_dump($app->getAppDirectory()); + +/* 空路径或相对路径会被拒绝 */ +var_dump($app->setAppDirectory("")); +var_dump($app->setAppDirectory("relative/path")); +?> +]]> + + &example.outputs.similar; + + + + + + &reftitle.seealso; + + + Yaf_Application::getAppDirectory + + + diff --git a/reference/yaf/yaf_config_abstract/get.xml b/reference/yaf/yaf_config_abstract/get.xml index dbd3e3eca..abf03fef3 100644 --- a/reference/yaf/yaf_config_abstract/get.xml +++ b/reference/yaf/yaf_config_abstract/get.xml @@ -1,42 +1,84 @@ - + - Yaf_Config_Abstract::get - Getter +Yaf_Config_Abstract::get +获取配置值 &reftitle.description; - abstract public mixedYaf_Config_Abstract::get - stringname - mixedvalue + public mixedYaf_Config_Abstract::get + stringnameNULL - - - - - &warn.undocumented.func; - + 根据名称获取配置值。如果省略 name 或为 &null;,则返回配置对象本身,可用于遍历所有配置值。 &reftitle.parameters; - &no.function.parameters; + + + name + +配置键名。可以使用点号表示法(例如 database.host)来访问嵌套的值。 + + + - &reftitle.returnvalues; - - - +name 关联的值。数组值会被包装成 Yaf_Config_Abstract 对象。如果键不存在则返回 &null;,当 name 为 &null; 时返回配置对象本身。 + + &reftitle.examples; + + <methodname>Yaf_Config_Abstract::get</methodname> 示例 + +get('database.host'), "\n"; - +$simple = new Yaf_Config_Simple([ + 'database' => ['host' => '127.0.0.1'], +]); +// 数组值会以 Yaf_Config_Abstract 实例的形式暴露 +echo $simple->get('database')->host, "\n"; + +var_dump($config->get('missing.key')); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Abstract::set + Yaf_Config_Ini::get + Yaf_Config_Simple::get + + + - + - Yaf_Config_Abstract::readonly - 寻找只读配置 +Yaf_Config_Abstract::readonly +检查配置是否只读 @@ -13,29 +13,56 @@ abstract public boolYaf_Config_Abstract::readonly - - - - - &warn.undocumented.func; - + 检查配置是否只读。该方法是抽象方法,必须由子类实现。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +如果配置是只读的则返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Abstract::readonly</methodname> 示例 + +readonly()); // Yaf_Config_Ini 总是只读的 - +$writable = new Yaf_Config_Simple(['env' => 'development']); +var_dump($writable->readonly()); + +$frozen = new Yaf_Config_Simple(['env' => 'development'], true); +var_dump($frozen->readonly()); +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Abstract::set + Yaf_Config_Ini::readonly + Yaf_Config_Simple::readonly + + + - + - Yaf_Config_Abstract::set - Setter +Yaf_Config_Abstract::set +设置配置值 &reftitle.description; - abstract public Yaf_Config_AbstractYaf_Config_Abstract::set - + abstract public boolYaf_Config_Abstract::set + stringname + mixedvalue - - - - - &warn.undocumented.func; - + 设置配置值。该方法是抽象方法,必须由子类实现。只读配置会拒绝修改。 &reftitle.parameters; - &no.function.parameters; + + + name + +要设置的配置键名。 + + + + value + +要赋的值。 + + + - &reftitle.returnvalues; - - - +成功时返回 &true;,失败时(例如配置是只读的)返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Abstract::set</methodname> 示例 + + 'development']); +var_dump($config->set('env', 'production')); +echo $config->env, "\n"; - +// 只读实现会拒绝修改 +$ini = new Yaf_Config_Ini('/etc/myapp/application.ini', 'common'); +var_dump($ini->set('env', 'production')); +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Abstract::get + Yaf_Config_Abstract::readonly + + + - + - Yaf_Config_Abstract::toArray - 转换为数组 +Yaf_Config_Abstract::toArray +以数组形式导出配置 &reftitle.description; - abstract public arrayYaf_Config_Abstract::toArray + public arrayYaf_Config_Abstract::toArray - - - - - &warn.undocumented.func; - + 以普通 PHP 数组的形式返回整个配置。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +以数组形式表示的配置数据,如果没有加载任何配置数据则返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Abstract::toArray</methodname> 示例 + + ['name' => 'MyApp'], + 'database' => ['host' => 'localhost'], +]); - +print_r($config->toArray()); +?> +]]> + + &example.outputs.similar; + + Array + ( + [name] => MyApp + ) + [database] => Array + ( + [host] => localhost + ) + +) +]]> + + + + + + &reftitle.seealso; + + Yaf_Config_Abstract::get + Yaf_Config_Ini::toArray + Yaf_Config_Simple::toArray + + + - + - Yaf_Config_Ini::__construct - Yaf_Config_Ini 构造方法 +Yaf_Config_Ini::__construct +Yaf_Config_Ini 构造方法 &reftitle.description; - public Yaf_Config_Ini::__construct - stringconfig_file - stringsection + publicYaf_Config_Ini::__construct + mixedconfig_file + stringsectionNULL - - Yaf_Config_Ini 构造方法 - + 从 INI 文件或数组创建一个新的 Yaf_Config_Ini 实例。生成的配置始终是只读的。 @@ -25,30 +23,68 @@ config_file - - INI 配置文件的路径 - +INI 文件的路径,或者配置值数组。 section - - INI 文件中想要解析的 section - +要加载的 INI 配置节名称。如果省略,则加载所有配置节。 - &reftitle.returnvalues; - - - +不返回值。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::__construct</methodname> 示例 + +application->name, "\n"; +echo $config->database->host, "\n"; +echo $config->log->level, "\n"; +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::get + Yaf_Config_Ini::set + Yaf_Config_Ini::readonly + + - + - Yaf_Config_Ini::count - Yaf_Config.ini 中所有元素的数量 +Yaf_Config_Ini::count +统计配置项的数量 &reftitle.description; - public voidYaf_Config_Ini::count + public intYaf_Config_Ini::count - - - - - &warn.undocumented.func; - + 返回顶层配置项的数量。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +以整数形式返回顶层配置项的数量。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::count</methodname> 示例 + +count()); +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::get + Yaf_Config_Ini::toArray + + - + - Yaf_Config_Ini::current - 检索当前值 +Yaf_Config_Ini::current +获取当前配置项的值 &reftitle.description; - public voidYaf_Config_Ini::current + public mixedYaf_Config_Ini::current - - - - - &warn.undocumented.func; - + 返回迭代过程中当前配置项的值。数组值会被包装成 Yaf_Config_Abstract 对象。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +当前配置项的值,如果位置无效则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::current</methodname> 示例 + + +$config->rewind(); +while ($config->valid()) { + $value = $config->current(); + if ($value instanceof Yaf_Config_Abstract) { + echo $config->key(), " => \n"; + } else { + echo $config->key(), " => ", $value, "\n"; + } + $config->next(); +} +?> +]]> + + &example.outputs.similar; + + +version => 1.0 +]]> + + + + + &reftitle.seealso; + + Yaf_Config_Ini::key + Yaf_Config_Ini::next + Yaf_Config_Ini::rewind + Yaf_Config_Ini::valid + + + - + - Yaf_Config_Ini::__get - 检索元素 +Yaf_Config_Ini::get +获取配置值 &reftitle.description; - public voidYaf_Config_Ini::__get - stringname + public mixedYaf_Config_Ini::get + stringnameNULL - - - - - &warn.undocumented.func; - + 根据名称获取配置值。可以使用点号表示法(例如 database.host)来访问嵌套的值。如果省略 name 或为 &null;,则返回配置对象本身。 @@ -27,24 +22,65 @@ name - - - +配置键名,可以使用点号表示法来访问嵌套的值。 - &reftitle.returnvalues; - - - +name 关联的值。数组值会被包装成 Yaf_Config_Ini 对象。如果键不存在则返回 &null;,当 name 为 &null; 时返回配置对象本身。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::get</methodname> 示例 + + +// 使用点号表示法访问嵌套的值 +echo $config->get('database.host'), "\n"; +// 数组值会被包装成 Yaf_Config_Ini 对象 +echo $config->get('database')->port, "\n"; + +// 不传参数时,返回配置对象本身 +echo $config->get()->application->name, "\n"; + +var_dump($config->get('missing.key')); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::set + Yaf_Config_Ini::toArray + + + - + - Yaf_Config_Ini::__isset - 检查节点是否存在 +Yaf_Config_Ini::__isset +检查键是否存在 &reftitle.description; - public voidYaf_Config_Ini::__isset + public boolYaf_Config_Ini::__isset stringname - - - - - &warn.undocumented.func; - + 检查配置键是否存在。当对配置对象使用 isset() 时会调用此方法。 @@ -27,22 +22,56 @@ name - - - +要检查的配置键。 - &reftitle.returnvalues; - - - +如果键存在返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::__isset</methodname> 示例 + +database)); +var_dump($config->__isset('database')); +var_dump(isset($config->cache)); +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::get + Yaf_Config_Ini::offsetExists + + - + - Yaf_Config_Ini::key - 返回当前元素的键 +Yaf_Config_Ini::key +获取当前配置项的键 &reftitle.description; - public voidYaf_Config_Ini::key + public mixedYaf_Config_Ini::key - - - - - &warn.undocumented.func; - + 返回迭代过程中当前配置项的键。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +当前配置项的键(字符串或整数),如果位置无效则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::key</methodname> 示例 + +rewind(); $config->valid(); $config->next()) { + echo $config->key(), "\n"; +} +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::current + Yaf_Config_Ini::next + Yaf_Config_Ini::rewind + Yaf_Config_Ini::valid + + - + - Yaf_Config_Ini::next - 向前移动到下一个元素 +Yaf_Config_Ini::next +移动到下一个配置项 @@ -13,27 +13,64 @@ public voidYaf_Config_Ini::next - - - - - &warn.undocumented.func; - + 将内部迭代器移动到下一个配置项。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::next</methodname> 示例 + +rewind(); +echo $config->key(), "\n"; + +$config->next(); +echo $config->key(), "\n"; + +$config->next(); // 已超过最后一个配置项 +var_dump($config->valid()); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::current + Yaf_Config_Ini::key + Yaf_Config_Ini::rewind + Yaf_Config_Ini::valid + + - + - Yaf_Config_Ini::offsetExists - 检查一个偏移位置是否存在 +Yaf_Config_Ini::offsetExists +检查键是否存在(ArrayAccess) &reftitle.description; - public voidYaf_Config_Ini::offsetExists - stringname + public boolYaf_Config_Ini::offsetExists + mixedname - - - - - &warn.undocumented.func; - + 检查配置键是否存在。此方法是 Yaf_Config_Ini::__isset 的别名,当对配置对象以数组方式使用 isset() 时会被调用。 @@ -27,22 +22,56 @@ name - - - +要检查的配置键。 - &reftitle.returnvalues; - - - +如果键存在返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::offsetExists</methodname> 示例 + +offsetExists('database')); +var_dump(isset($config['cache'])); +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::get + Yaf_Config_Ini::__isset + + - + - Yaf_Config_Ini::offsetGet - 获取一个偏移位置的值 +Yaf_Config_Ini::offsetGet +获取配置值(ArrayAccess) &reftitle.description; - public voidYaf_Config_Ini::offsetGet - stringname + public mixedYaf_Config_Ini::offsetGet + mixedname - - - - - &warn.undocumented.func; - + 根据键获取配置值。此方法是 Yaf_Config_Ini::get 的别名,当以数组方式读取配置对象时会被调用。 @@ -27,22 +22,57 @@ name - - - +要获取的配置键。 - &reftitle.returnvalues; - - - +返回 name 对应的值,如果键不存在则返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::offsetGet</methodname> 示例 + + +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::get + Yaf_Config_Ini::offsetSet + Yaf_Config_Ini::offsetUnset + + - + - Yaf_Config_Ini::offsetSet - 设置一个偏移位置的值 +Yaf_Config_Ini::offsetSet +设置配置值(ArrayAccess) &reftitle.description; public voidYaf_Config_Ini::offsetSet - stringname - stringvalue + mixedname + mixedvalue - - - - - &warn.undocumented.func; - + 尝试以数组方式设置配置值。此方法是 Yaf_Config_Ini::set 的别名。由于 Yaf_Config_Ini 始终只读,该操作总是失败并触发一条警告。 @@ -28,30 +23,62 @@ name - - - +要设置的配置键。 value - - - +要赋的值。 - &reftitle.returnvalues; - - - +没有返回值。由于 Yaf_Config_Ini 是只读的,会触发一条警告。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::offsetSet</methodname> 示例 + + +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::set + Yaf_Config_Ini::offsetGet + Yaf_Config_Ini::readonly + + - + - Yaf_Config_Ini::offsetUnset - 复位一个偏移位置的值 +Yaf_Config_Ini::offsetUnset +删除配置键(ArrayAccess) &reftitle.description; public voidYaf_Config_Ini::offsetUnset - stringname + mixedname - - - - - &warn.undocumented.func; - + 根据键删除配置项。当对配置对象以数组方式使用 unset() 时会调用此方法。 @@ -27,22 +22,55 @@ name - - - +要删除的配置键。 - &reftitle.returnvalues; - - - +没有返回值。如果配置是只读的,会触发一条警告。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::offsetUnset</methodname> 示例 + + +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::offsetGet + Yaf_Config_Ini::offsetSet + + - + - Yaf_Config_Ini::readonly - 检查配置是否只读 +Yaf_Config_Ini::readonly +检查配置是否只读 &reftitle.description; - public voidYaf_Config_Ini::readonly + public boolYaf_Config_Ini::readonly - - - - - &warn.undocumented.func; - + 检查配置是否只读。Yaf_Config_Ini 始终是只读的。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +始终返回 &true;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::readonly</methodname> 示例 + +readonly()); + +// 写入操作会被拒绝(并触发一条警告) +var_dump($config->set('version', '2.0')); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::set + + - + - Yaf_Config_Ini::rewind - 检查当前位置是否有效 +Yaf_Config_Ini::rewind +将迭代器重置到第一个配置项 @@ -13,27 +13,60 @@ public voidYaf_Config_Ini::rewind - - - - - &warn.undocumented.func; - + 将内部迭代器回退到第一个配置项。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::rewind</methodname> 示例 + +next(); +echo $config->key(), "\n"; + +$config->rewind(); +echo $config->key(), "\n"; +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::current + Yaf_Config_Ini::key + Yaf_Config_Ini::next + Yaf_Config_Ini::valid + + - + - Yaf_Config_Ini::__set - The __set purpose +Yaf_Config_Ini::set +设置配置值 &reftitle.description; - public voidYaf_Config_Ini::__set + public boolYaf_Config_Ini::set stringname mixedvalue - - - - - &warn.undocumented.func; - + 尝试设置配置值。由于 Yaf_Config_Ini 始终只读,此方法总是失败并触发一条警告。 @@ -28,30 +23,62 @@ name - - - +要设置的配置键。 value - - - +要赋的值。 - &reftitle.returnvalues; - - - +由于 Yaf_Config_Ini 是只读的,始终返回 &false; 并触发一条警告。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::set</methodname> 示例 + +set('database.host', '192.0.2.10')); + +echo $config->get('database.host'), "\n"; +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::get + Yaf_Config_Ini::readonly + + - + - Yaf_Config_Ini::toArray - 配置作为数组返回 +Yaf_Config_Ini::toArray +以数组形式导出配置 &reftitle.description; - public voidYaf_Config_Ini::toArray + public arrayYaf_Config_Ini::toArray - - 从 Yaf_Config_Ini 中返回 PHP 数组 - - - &warn.undocumented.func; - + 以普通 PHP 数组形式返回整个配置。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +数组形式的配置数据。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::toArray</methodname> 示例 + +toArray()); +?> +]]> + + &example.outputs.similar; + + Array + ( + [name] => MyApp + ) + [database] => Array + ( + [host] => localhost + [port] => 3306 + ) + +) +]]> + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::get + + - + - Yaf_Config_Ini::valid - 检查迭代器是否有效 +Yaf_Config_Ini::valid +检查当前位置是否有效 &reftitle.description; - public voidYaf_Config_Ini::valid + public boolYaf_Config_Ini::valid - - - - - &warn.undocumented.func; - + 检查当前迭代器位置是否有效。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +如果当前位置有效返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Ini::valid</methodname> 示例 + +rewind(); +var_dump($config->valid()); + +$config->next(); +var_dump($config->valid()); + +$config->next(); // 已超过最后一个配置项 +var_dump($config->valid()); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini::current + Yaf_Config_Ini::key + Yaf_Config_Ini::next + Yaf_Config_Ini::rewind + + - + - Yaf_Config_Simple::__construct - 构造函数 +Yaf_Config_Simple::__construct +Yaf_Config_Simple 的构造方法 &reftitle.description; - public Yaf_Config_Simple::__construct - arrayconfigs + publicYaf_Config_Simple::__construct + arrayvalues boolreadonlyfalse - - - - - &warn.undocumented.func; - + 根据配置值数组创建一个新的 Yaf_Config_Simple 实例。 &reftitle.parameters; - configs + values - - - +配置值数组。 readonly - - - +配置是否只读。默认为 &false;(可写)。 - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::__construct</methodname> 示例 + + ['name' => 'MyApp', 'env' => 'production'], + 'database' => ['host' => 'localhost', 'port' => 3306], +]); +echo $config->application->name, "\n"; +echo $config->database->host, "\n"; + +// 可选的第二个参数使配置变为只读 +$frozen = new Yaf_Config_Simple(['env' => 'testing'], true); +var_dump($frozen->readonly()); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::get + Yaf_Config_Simple::set + Yaf_Config_Simple::readonly + + - + - Yaf_Config_Simple::count - 返回配置的节数量 +Yaf_Config_Simple::count +统计配置项数量 &reftitle.description; - public voidYaf_Config_Simple::count + public intYaf_Config_Simple::count - - - - - &warn.undocumented.func; - + 返回顶层配置项的数量。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +顶层配置项的数量,以整数形式返回。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::count</methodname> 示例 + + ['name' => 'MyApp'], + 'database' => ['host' => 'localhost'], +]); + +// 只统计顶层配置项("application" 和 "database") +var_dump(count($config)); +var_dump($config->count()); +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::get + Yaf_Config_Simple::toArray + + - + - Yaf_Config_Simple::current - 返回当前节点 +Yaf_Config_Simple::current +获取当前配置项的值 &reftitle.description; - public voidYaf_Config_Simple::current + public mixedYaf_Config_Simple::current - - - - - &warn.undocumented.func; - + 返回迭代过程中当前配置项的值。数组类型的值会被包装为 Yaf_Config_Abstract 对象。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +当前配置项的值,如果位置无效则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::current</methodname> 示例 + + ['name' => 'MyApp'], + 'version' => '1.0', +]); + +$config->rewind(); +while ($config->valid()) { + $value = $config->current(); + if ($value instanceof Yaf_Config_Abstract) { + echo $config->key(), " => \n"; + } else { + echo $config->key(), " => ", $value, "\n"; + } + $config->next(); +} +?> +]]> + + &example.outputs.similar; + + +version => 1.0 +]]> + + + + + &reftitle.seealso; + + Yaf_Config_Simple::key + Yaf_Config_Simple::next + Yaf_Config_Simple::rewind + Yaf_Config_Simple::valid + + - + - Yaf_Config_Simple::__get - 读取节点配置 +Yaf_Config_Simple::get +获取配置值 &reftitle.description; - public voidYaf_Config_Simple::__get - stringname + public mixedYaf_Config_Simple::get + stringnameNULL - - - - - &warn.undocumented.func; - + 根据名称获取配置值。如果省略 name 或其值为 &null;,则返回配置对象本身。 @@ -27,22 +22,53 @@ name - - - +要获取的配置键。 - &reftitle.returnvalues; - - - +返回 name 对应的值。数组类型的值会被包装为 Yaf_Config_Simple 对象。如果键不存在返回 &null;;当 name 为 &null; 时返回配置对象本身。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::get</methodname> 示例 + + ['name' => 'MyApp'], + 'database' => ['host' => 'localhost'], +]); + +// 数组类型的值会被包装为 Yaf_Config_Simple 对象 +echo $config->get('database')->host, "\n"; +echo $config->get('application')->name, "\n"; +var_dump($config->get('missing')); +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::set + Yaf_Config_Simple::toArray + + - + - Yaf_Config_Simple::__isset - 检查节点是否存在 +Yaf_Config_Simple::__isset +检查键是否存在 &reftitle.description; - public voidYaf_Config_Simple::__isset + public boolYaf_Config_Simple::__isset stringname - - - - - &warn.undocumented.func; - + 检查配置键是否存在。当对配置对象使用 isset() 时会调用此方法。 @@ -27,22 +22,52 @@ name - - - +要检查的配置键。 - &reftitle.returnvalues; - - - +如果键存在返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::__isset</methodname> 示例 + + ['name' => 'MyApp'], + 'database' => ['host' => 'localhost'], +]); + +var_dump(isset($config->application)); +var_dump($config->__isset('application')); +var_dump(isset($config->cache)); +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::get + Yaf_Config_Simple::offsetExists + + - + - Yaf_Config_Simple::key - 返回当前元素的键 +Yaf_Config_Simple::key +获取当前配置项的键 &reftitle.description; - public voidYaf_Config_Simple::key + public mixedYaf_Config_Simple::key - - - - - &warn.undocumented.func; - + 返回迭代过程中当前配置项的键。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +当前配置项的键(字符串或整数),如果位置无效则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::key</methodname> 示例 + + ['name' => 'MyApp'], + 'database' => ['host' => 'localhost'], +]); + +for ($config->rewind(); $config->valid(); $config->next()) { + echo $config->key(), "\n"; +} +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::current + Yaf_Config_Simple::next + Yaf_Config_Simple::rewind + Yaf_Config_Simple::valid + + - + - Yaf_Config_Simple::next - 向前移动到下一个元素 +Yaf_Config_Simple::next +移动到下一个配置项 @@ -13,27 +13,61 @@ public voidYaf_Config_Simple::next - - - - - &warn.undocumented.func; - + 将内部迭代器移动到下一个配置项。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::next</methodname> 示例 + + ['name' => 'MyApp'], + 'database' => ['host' => 'localhost'], +]); +$config->rewind(); +echo $config->key(), "\n"; + +$config->next(); +echo $config->key(), "\n"; + +$config->next(); // 已超过最后一个配置项 +var_dump($config->valid()); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::current + Yaf_Config_Simple::key + Yaf_Config_Simple::rewind + Yaf_Config_Simple::valid + + - + - Yaf_Config_Simple::offsetExists - 检查一个偏移位置是否存在 +Yaf_Config_Simple::offsetExists +检查键是否存在(ArrayAccess) &reftitle.description; - public voidYaf_Config_Simple::offsetExists - stringname + public boolYaf_Config_Simple::offsetExists + mixedname - - - - - &warn.undocumented.func; - + 检查配置键是否存在。此方法是 Yaf_Config_Simple::__isset 的别名,当对配置对象以数组方式使用 isset() 时会被调用。 @@ -27,22 +22,52 @@ name - - - +要检查的配置键。 - &reftitle.returnvalues; - - - +如果键存在返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::offsetExists</methodname> 示例 + + ['name' => 'MyApp'], + 'database' => ['host' => 'localhost'], +]); + +var_dump(isset($config['database'])); +var_dump($config->offsetExists('database')); +var_dump(isset($config['cache'])); +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::get + Yaf_Config_Simple::__isset + + - + - Yaf_Config_Simple::offsetGet - 获取一个偏移位置的值 +Yaf_Config_Simple::offsetGet +获取配置值(ArrayAccess) &reftitle.description; - public voidYaf_Config_Simple::offsetGet - stringname + public mixedYaf_Config_Simple::offsetGet + mixedname - - - - - &warn.undocumented.func; - + 根据键获取配置值。该方法是 Yaf_Config_Simple::get 的别名,当以数组语法读取配置对象时会被调用。 @@ -27,22 +22,54 @@ name - - - +要获取的配置键。 - &reftitle.returnvalues; - - - +返回 name 对应的值,如果键不存在则返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::offsetGet</methodname> 示例 + + ['name' => 'MyApp'], + 'database' => ['host' => 'localhost'], +]); + +// 数组值会被包装成 Yaf_Config_Simple 对象 +echo $config['application']->name, "\n"; +echo $config['database']['host'], "\n"; +var_dump($config['missing']); +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::get + Yaf_Config_Simple::offsetSet + Yaf_Config_Simple::offsetUnset + + - + - Yaf_Config_Simple::offsetSet - 设置一个偏移位置的值 +Yaf_Config_Simple::offsetSet +设置配置值(ArrayAccess) &reftitle.description; public voidYaf_Config_Simple::offsetSet - stringname - stringvalue + mixedname + mixedvalue - - - - - &warn.undocumented.func; - + 以数组语法设置配置值。该方法是 Yaf_Config_Simple::set 的别名。如果配置是只读的,赋值会静默失败。 @@ -28,30 +23,63 @@ name - - - +要设置的配置键。 value - - - +要赋的值。 - &reftitle.returnvalues; - - - +没有返回值。如果配置是只读的,赋值会失败。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::offsetSet</methodname> 示例 + + 'development']); +// 默认可写 +$config['env'] = 'production'; +$config['cache'] = ['enable' => true]; +echo $config['env'], "\n"; +var_dump($config['cache']['enable']); + +// 对只读配置的赋值会静默失败 +$frozen = new Yaf_Config_Simple(['env' => 'development'], true); +$frozen['env'] = 'production'; +echo $frozen['env'], "\n"; +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::set + Yaf_Config_Simple::offsetGet + Yaf_Config_Simple::offsetUnset + + - + - Yaf_Config_Simple::offsetUnset - 复位一个偏移位置的值 +Yaf_Config_Simple::offsetUnset +移除配置项(ArrayAccess) &reftitle.description; public voidYaf_Config_Simple::offsetUnset - stringname + mixedname - - - - - &warn.undocumented.func; - + 根据键移除一个配置项。当对配置对象使用数组语法的 unset() 时,会调用该方法。 @@ -27,22 +22,55 @@ name - - - +要移除的配置键。 - &reftitle.returnvalues; - - - +没有返回值。如果配置是只读的,会触发一个警告。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::offsetUnset</methodname> 示例 + + ['enable' => true], + 'env' => 'development', +]); +unset($config['cache']); +var_dump(isset($config['cache'])); + +// 只读配置不能被修改:会触发一个警告 +$frozen = new Yaf_Config_Simple(['env' => 'development'], true); +unset($frozen['env']); +var_dump(isset($frozen['env'])); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::offsetGet + Yaf_Config_Simple::offsetSet + + - + - Yaf_Config_Simple::readonly - 检查配置是否只读 +Yaf_Config_Simple::readonly +检查配置是否只读 &reftitle.description; - public voidYaf_Config_Simple::readonly + public boolYaf_Config_Simple::readonly - - - - - &warn.undocumented.func; - + 检查配置是否为只读。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +如果配置是只读的返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::readonly</methodname> 示例 + + 'development']); +var_dump($writable->readonly()); + +$frozen = new Yaf_Config_Simple(['env' => 'development'], true); +var_dump($frozen->readonly()); +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::set + + - + - Yaf_Config_Simple::rewind - 检查当前位置是否有效 +Yaf_Config_Simple::rewind +将迭代器重置到第一个元素 @@ -13,27 +13,57 @@ public voidYaf_Config_Simple::rewind - - - - - &warn.undocumented.func; - + 将内部迭代器回退到第一个配置项。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::rewind</methodname> 示例 + + ['name' => 'MyApp'], + 'database' => ['host' => 'localhost'], +]); +$config->next(); +echo $config->key(), "\n"; + +$config->rewind(); +echo $config->key(), "\n"; +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::current + Yaf_Config_Simple::key + Yaf_Config_Simple::next + Yaf_Config_Simple::valid + + - + - Yaf_Config_Simple::__set - 设置节点配置 +Yaf_Config_Simple::set +设置配置值 &reftitle.description; - public voidYaf_Config_Simple::__set + public boolYaf_Config_Simple::set stringname - stringvalue + mixedvalue - - - - - &warn.undocumented.func; - + 设置配置值。如果配置是只读的,则失败并返回 &false;。 @@ -28,30 +23,60 @@ name - - - +要设置的配置键。 value - - - +要赋的值。 - &reftitle.returnvalues; - - - +成功时返回 &true;,如果配置是只读的则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::set</methodname> 示例 + + 'development']); +var_dump($config->set('env', 'production')); +echo $config->env, "\n"; + +// 只读配置会拒绝修改 +$frozen = new Yaf_Config_Simple(['env' => 'development'], true); +var_dump($frozen->set('env', 'production')); +echo $frozen->env, "\n"; +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::get + Yaf_Config_Simple::readonly + + - + - Yaf_Config_Simple::toArray - 返回 PHP 数组 +Yaf_Config_Simple::toArray +以数组形式导出配置 @@ -13,24 +13,62 @@ public arrayYaf_Config_Simple::toArray - - 从 Yaf_Config_Simple 中返回 PHP 数组 - + 以普通 PHP 数组的形式返回整个配置。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +以数组形式表示的配置数据。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::toArray</methodname> 示例 + + ['name' => 'MyApp'], + 'database' => ['host' => 'localhost', 'port' => 3306], +]); + +print_r($config->toArray()); +?> +]]> + + &example.outputs.similar; + + Array + ( + [name] => MyApp + ) + + [database] => Array + ( + [host] => localhost + [port] => 3306 + ) +) +]]> + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::get + + - + - Yaf_Config_Simple::valid - 检查迭代器是否有效 +Yaf_Config_Simple::valid +检查当前位置是否有效 &reftitle.description; - public voidYaf_Config_Simple::valid + public boolYaf_Config_Simple::valid - - - - - &warn.undocumented.func; - + 检查当前迭代器位置是否有效。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +如果当前位置有效返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Config_Simple::valid</methodname> 示例 + + ['name' => 'MyApp'], + 'database' => ['host' => 'localhost'], +]); +$config->rewind(); +var_dump($config->valid()); + +$config->next(); +var_dump($config->valid()); + +$config->next(); // 越过最后一个元素 +var_dump($config->valid()); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Simple::current + Yaf_Config_Simple::key + Yaf_Config_Simple::next + Yaf_Config_Simple::rewind + + - + Yaf_Controller_Abstract::__construct - Yaf_Controller_Abstract 构造方法 + Yaf_Controller_Abstract 的构造函数 &reftitle.description; - final private Yaf_Controller_Abstract::__construct + public Yaf_Controller_Abstract::__construct - - Yaf_Controller_Abstract::__construct 是 final,这意味着不能重写。可以考虑查看 - Yaf_Controller_Abstract::init。 - + + Yaf_Controller_Abstract::__construct 会在分发 + 过程中创建控制器对象时由 Yaf 调用。它不接受任何参数,用户不应该 + 直接调用它。由于不建议用自定义逻辑覆盖它, + Yaf_Controller_Abstract::init 被作为 + 用户层的初始化钩子提供。 + @@ -26,16 +29,57 @@ &reftitle.returnvalues; - + + 没有返回值。 + + - + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::__construct</methodname> 示例 + +getRequest() instanceof Yaf_Request_Abstract); + var_dump($this->getResponse() instanceof Yaf_Response_Abstract); + var_dump($this->getView() instanceof Yaf_View_Interface); + } + + public function indexAction() { + // ... + } +} +?> +]]> + + &example.outputs.similar; + + + + &reftitle.seealso; - - Yaf_Controller_Abstract::init - + + + Yaf_Controller_Abstract::init + + diff --git a/reference/yaf/yaf_controller_abstract/display.xml b/reference/yaf/yaf_controller_abstract/display.xml index f3f83065c..0ffa2f6dd 100644 --- a/reference/yaf/yaf_controller_abstract/display.xml +++ b/reference/yaf/yaf_controller_abstract/display.xml @@ -1,22 +1,25 @@ - + Yaf_Controller_Abstract::display - The display purpose + 渲染并直接显示视图 &reftitle.description; - protected boolYaf_Controller_Abstract::display + protected boolnullYaf_Controller_Abstract::display stringtpl - arrayparameters + arraynullparameters - - - + + 渲染视图脚本 tpl 并直接发送结果,这与 + Yaf_Controller_Abstract::render 不同, + 后者会返回渲染后的输出。默认动作模板的自动渲染由 + Yaf_Dispatcher::autoRender 控制。 + @@ -25,17 +28,18 @@ tpl - - - + + 视图脚本名称,相对于视图路径。 + parameters - - - + + 一个关联数组,其中的变量会被导出到本次渲染的视图脚本中, + 覆盖通过视图引擎分配的变量。 + @@ -43,11 +47,65 @@ &reftitle.returnvalues; - + + 成功时返回 &true;,失败时返回 &false; / &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::display</methodname> 示例 + +display("product/list.phtml", array( + "products" => array("yaf", "php"), + )); + } +} +?> +]]> + + + + 模板示例 + + +
    + +
  • + +
+]]> +
+ &example.outputs.similar; + + +
  • yaf
  • +
  • php
  • + +]]> +
    +
    + + &reftitle.seealso; + + + Yaf_Controller_Abstract::render + Yaf_Dispatcher::autoRender + + +
    diff --git a/reference/yaf/yaf_controller_abstract/forward.xml b/reference/yaf/yaf_controller_abstract/forward.xml index af54f6fd4..618b0539f 100644 --- a/reference/yaf/yaf_controller_abstract/forward.xml +++ b/reference/yaf/yaf_controller_abstract/forward.xml @@ -1,40 +1,48 @@ - + Yaf_Controller_Abstract::forward - 转发到另一个动作 + 将当前请求转发到另一个动作 &reftitle.description; - public boolYaf_Controller_Abstract::forward + public boolnullYaf_Controller_Abstract::forward stringaction - arrayparamters + arraynullparameters - public boolYaf_Controller_Abstract::forward + public boolnullYaf_Controller_Abstract::forward stringcontroller stringaction - arrayparamters + arraynullparameters - public boolYaf_Controller_Abstract::forward + public boolnullYaf_Controller_Abstract::forward stringmodule stringcontroller stringaction - arrayparamters + arraynullparameters - - 转发当前处理过程到其他动作。 - - - 此方法不会立即切换到目标操作,而是会在当前流程结束后发生。 - - - + + 将当前请求转发到另一个动作。目标根据参数的数量和类型确定: + + + 只有 action:转发到当前控制器的另一个动作。 + controlleraction:转发到另一个控制器。 + modulecontrolleraction:转发到另一个模块。 + 可选的 parameters 数组携带调用参数,可以通过 Yaf_Request_Abstract::getParam 获取。 + + + + 此方法不会立即切换到目标动作,切换会在当前流程结束后发生。 + 如果想立即交出控制权,请从当前动作方法中返回 + (返回 &false; 还会告诉 Yaf 不要自动渲染当前视图)。 + + @@ -43,33 +51,34 @@ module - - 目标模块名称,如果是 NULL,则采用默认模块名 - + + 目标模块名。如果指定了当前模块,则原样使用。 + controller - - 目标控制器名称 - + + 目标控制器名。 + action - - 目标动作名称 - + + 目标动作名。 + - paramters + parameters - - 调用参数 - + + 目标动作的调用参数,可以通过 + Yaf_Request_Abstract::getParam 获取。 + @@ -77,9 +86,9 @@ &reftitle.returnvalues; - - &return.success; - + + 成功时返回 &true;,失败时返回 &false; / &null;。 + @@ -91,19 +100,19 @@ forward("login", array("from" => "Index")); // 转发到 login 动作 - return FALSE; // 这非常重要,这会结束当前工作流 - // 然后告诉 Yaf 不要自动渲染 - } + public function indexAction() { + $logined = $_SESSION["login"]; + if (!$logined) { + $this->forward("login", array("from" => "Index")); // 转发到 login 动作 + return false; // 这一点很重要:结束当前流程, + // 并告诉 Yaf 不要自动渲染 + } - // other processes + // 其他处理 } public function loginAction() { - echo "login, redirected from ", $this->_request->getParam("from") , " action"; + echo "login, redirected from ", $this->_request->getParam("from") , " action"; } } ?> @@ -120,9 +129,11 @@ class IndexController extends Yaf_Controller_Abstract &reftitle.seealso; - - Yaf_Request_Abstrace::getParam - + + + Yaf_Request_Abstract::getParam + + diff --git a/reference/yaf/yaf_controller_abstract/getinvokearg.xml b/reference/yaf/yaf_controller_abstract/getinvokearg.xml index 67efce798..960232510 100644 --- a/reference/yaf/yaf_controller_abstract/getinvokearg.xml +++ b/reference/yaf/yaf_controller_abstract/getinvokearg.xml @@ -1,21 +1,23 @@ - + Yaf_Controller_Abstract::getInvokeArg - The getInvokeArg purpose + 获取一个动作调用参数 &reftitle.description; - public voidYaf_Controller_Abstract::getInvokeArg + public stringnullYaf_Controller_Abstract::getInvokeArg stringname - - - + + 根据名称返回当前动作的单个调用参数。调用参数通过 + Yaf_Controller_Abstract::forward + 传递给动作。 + @@ -24,9 +26,9 @@ name - - - + + 要获取的调用参数的名称。 + @@ -34,11 +36,55 @@ &reftitle.returnvalues; - + + 参数值,如果不存在则返回 &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::getInvokeArg</methodname> 示例 + +forward("profile", array("name" => "laruence")); + return false; // 结束当前流程 + } + + public function profileAction() { + // 按名称获取单个调用参数 + var_dump($this->getInvokeArg("name")); + var_dump($this->getInvokeArg("missing")); + } +} +?> +]]> + + &example.outputs.similar; + + + + + + &reftitle.seealso; + + + Yaf_Controller_Abstract::getInvokeArgs + Yaf_Controller_Abstract::forward + + + diff --git a/reference/yaf/yaf_controller_abstract/getinvokeargs.xml b/reference/yaf/yaf_controller_abstract/getinvokeargs.xml index a4ae0cb01..f0e5562f9 100644 --- a/reference/yaf/yaf_controller_abstract/getinvokeargs.xml +++ b/reference/yaf/yaf_controller_abstract/getinvokeargs.xml @@ -1,21 +1,23 @@ - + Yaf_Controller_Abstract::getInvokeArgs - The getInvokeArgs purpose + 获取全部动作调用参数 &reftitle.description; - public voidYaf_Controller_Abstract::getInvokeArgs + public arraynullYaf_Controller_Abstract::getInvokeArgs - - - + + 以参数名为键的数组形式返回当前动作的全部调用参数。 + 调用参数通过 + Yaf_Controller_Abstract::forward 传递给动作。 + @@ -25,11 +27,56 @@ &reftitle.returnvalues; - + + 调用参数组成的数组,如果没有传递参数则返回 &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::getInvokeArgs</methodname> 示例 + +forward("list", array("category" => "book", "page" => 2)); + return false; // 结束当前流程 + } + + public function listAction() { + // 当前动作的全部调用参数 + var_dump($this->getInvokeArgs()); + } +} +?> +]]> + + &example.outputs.similar; + + + string(4) "book" + ["page"]=> + int(2) +} +]]> + + + + &reftitle.seealso; + + + Yaf_Controller_Abstract::getInvokeArg + Yaf_Controller_Abstract::forward + + + diff --git a/reference/yaf/yaf_controller_abstract/getmodulename.xml b/reference/yaf/yaf_controller_abstract/getmodulename.xml index 2c3d20492..d23ee5c54 100644 --- a/reference/yaf/yaf_controller_abstract/getmodulename.xml +++ b/reference/yaf/yaf_controller_abstract/getmodulename.xml @@ -1,21 +1,21 @@ - + Yaf_Controller_Abstract::getModuleName - 获取当前控制器所属的模块名 + 获取模块名 &reftitle.description; - public stringYaf_Controller_Abstract::getModuleName + public stringnullYaf_Controller_Abstract::getModuleName - - 获取当前控制器所属的模块名 - + + 返回该控制器所属的模块名。 + @@ -25,11 +25,46 @@ &reftitle.returnvalues; - + + 模块名(&string; 类型),如果未设置则返回 &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::getModuleName</methodname> 示例 + +getModuleName()); + } +} +?> +]]> + + &example.outputs.similar; + + + + + + &reftitle.seealso; + + + Yaf_Controller_Abstract::getName + Yaf_Request_Abstract::getModuleName + + + diff --git a/reference/yaf/yaf_controller_abstract/getname.xml b/reference/yaf/yaf_controller_abstract/getname.xml new file mode 100644 index 000000000..50c70c5d4 --- /dev/null +++ b/reference/yaf/yaf_controller_abstract/getname.xml @@ -0,0 +1,90 @@ + + + + + + Yaf_Controller_Abstract::getName + 获取控制器名称 + + + + &reftitle.description; + + public stringnullYaf_Controller_Abstract::getName + + + + 返回控制器名称。 + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + 返回 &string; 类型的控制器名称,如果未设置则返回 &null;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::getName</methodname> 示例 + +getName()); + } +} +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + + Yaf_Controller_Abstract::getModuleName + Yaf_Request_Abstract::getControllerName + + + + + + + diff --git a/reference/yaf/yaf_controller_abstract/getrequest.xml b/reference/yaf/yaf_controller_abstract/getrequest.xml index 7f7d9747f..d0fe0a9f8 100644 --- a/reference/yaf/yaf_controller_abstract/getrequest.xml +++ b/reference/yaf/yaf_controller_abstract/getrequest.xml @@ -1,21 +1,21 @@ - + Yaf_Controller_Abstract::getRequest - 检索当前请求对象 + 获取当前请求对象 &reftitle.description; - public Yaf_Request_AbstractYaf_Controller_Abstract::getRequest + public Yaf_Request_AbstractnullYaf_Controller_Abstract::getRequest - - 检索当前请求对象 - + + 返回与该控制器关联的 Yaf_Request_Abstract 实例。 + @@ -25,12 +25,51 @@ &reftitle.returnvalues; + + Yaf_Request_Abstract 实例,如果没有可用的请求则返回 &null;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::getRequest</methodname> 示例 + +getRequest(); + var_dump($request->getModuleName()); + var_dump($request->getControllerName()); + var_dump($request->getActionName()); + } +} +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; - Yaf_Request_Abstract 实例 + + Yaf_Controller_Abstract::getResponse + Yaf_Request_Abstract + - - + Yaf_Controller_Abstract::getResponse - 检索当前响应对象 + 获取当前响应对象 &reftitle.description; - public Yaf_Response_AbstractYaf_Controller_Abstract::getResponse + public Yaf_Response_AbstractnullYaf_Controller_Abstract::getResponse - - 检索当前响应对象 - + + 返回与该控制器关联的 Yaf_Response_Abstract 实例。 + @@ -25,12 +25,46 @@ &reftitle.returnvalues; + + Yaf_Response_Abstract 实例,如果没有可用的响应则返回 &null;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::getResponse</methodname> 示例 + +disableView(); + + $response = $this->getResponse(); + $response->setHeader("Content-Type", "application/json"); + $response->setBody(json_encode(array("name" => "yaf"))); + // Yaf 会在分发循环结束后发送响应体 + } +} +?> +]]> + + + + + + &reftitle.seealso; - Yaf_Response_Abstract 实例 + + Yaf_Controller_Abstract::getRequest + Yaf_Response_Abstract + - - + Yaf_Controller_Abstract::getView - 获取当前的视图引擎 + 获取视图引擎 &reftitle.description; - public Yaf_View_InterfaceYaf_Controller_Abstract::getView + public Yaf_View_InterfacenullYaf_Controller_Abstract::getView - - 获取当前的视图引擎 - + + 返回绑定到该控制器的视图引擎。 + @@ -25,11 +25,42 @@ &reftitle.returnvalues; - + + Yaf_View_Interface 实例,如果没有可用的视图引擎则返回 &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::getView</methodname> 示例 + +getView(); + + // 把 $products 导出到模板 product/index.phtml + $view->assign("products", array("yaf", "php")); + } +} +?> +]]> + + + + &reftitle.seealso; + + + Yaf_Controller_Abstract::initView + Yaf_View_Interface + + + diff --git a/reference/yaf/yaf_controller_abstract/getviewpath.xml b/reference/yaf/yaf_controller_abstract/getviewpath.xml index 005599c7c..0ed55bb56 100644 --- a/reference/yaf/yaf_controller_abstract/getviewpath.xml +++ b/reference/yaf/yaf_controller_abstract/getviewpath.xml @@ -1,21 +1,21 @@ - + Yaf_Controller_Abstract::getViewpath - The getViewpath purpose + 获取视图路径 &reftitle.description; - public stringYaf_Controller_Abstract::getViewpath + public stringnullYaf_Controller_Abstract::getViewpath - - - + + 返回绑定到该控制器的视图引擎所使用的模板目录。 + @@ -25,11 +25,47 @@ &reftitle.returnvalues; - + + 视图模板目录(&string; 类型)。 + + - + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::getViewpath</methodname> 示例 + +getViewpath()); + } +} +?> +]]> + + &example.outputs.similar; + + + + + + &reftitle.seealso; + + + Yaf_Controller_Abstract::setViewpath + Yaf_Controller_Abstract::initView + + + diff --git a/reference/yaf/yaf_controller_abstract/init.xml b/reference/yaf/yaf_controller_abstract/init.xml index 50f28bf04..1b083aed6 100644 --- a/reference/yaf/yaf_controller_abstract/init.xml +++ b/reference/yaf/yaf_controller_abstract/init.xml @@ -1,11 +1,10 @@ - - + Yaf_Controller_Abstract::init - 控制器初始化 + 控制器初始化钩子 @@ -14,10 +13,13 @@ public voidYaf_Controller_Abstract::init - - Yaf_Controller_Abstract::__construct 是 final 类型,所以用户不能重载它。但是用户可以定义 - Yaf_Controller_Abstract::init,该函数会在控制器对象实例化之后被调用。 - + + Yaf_Controller_Abstract::__construct 不适合 + 用自定义逻辑覆盖,因此提供了 + Yaf_Controller_Abstract::init + 作为用户层的初始化钩子。如果在控制器中定义了它, + 它会在控制器对象实例化之后立即被调用。 + @@ -27,9 +29,33 @@ &reftitle.returnvalues; - + + 没有返回值。 + + + + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::init</methodname> 示例 + +getView()->assign("sitename", "Yaf Tutorial"); + } - + public function indexAction() { + // ... + } +} +?> +]]> + + diff --git a/reference/yaf/yaf_controller_abstract/initview.xml b/reference/yaf/yaf_controller_abstract/initview.xml index 2f09c2b02..07124c4cd 100644 --- a/reference/yaf/yaf_controller_abstract/initview.xml +++ b/reference/yaf/yaf_controller_abstract/initview.xml @@ -1,21 +1,23 @@ - + Yaf_Controller_Abstract::initView - The initView purpose + 初始化视图并返回 &reftitle.description; - public voidYaf_Controller_Abstract::initView - arrayoptions + public Yaf_View_InterfacenullYaf_Controller_Abstract::initView + arraynulloptions - - - + + 返回绑定到该控制器的视图引擎。视图引擎由 + Yaf_Dispatcher 在分发过程中初始化, + 使用为当前控制器设置的模板路径。 + @@ -24,9 +26,10 @@ options - - - + + 传递给视图引擎的选项,参见 + Yaf_View_Simple::__construct。 + @@ -34,11 +37,45 @@ &reftitle.returnvalues; - + + 成功时返回 Yaf_View_Interface 实例, + 失败时返回 &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::initView</methodname> 示例 + +initView(); + $view->assign("products", array("yaf", "php")); + } +} +?> +]]> + + + + &reftitle.seealso; + + + Yaf_Controller_Abstract::getView + Yaf_View_Interface + + + diff --git a/reference/yaf/yaf_controller_abstract/redirect.xml b/reference/yaf/yaf_controller_abstract/redirect.xml index 085a650c5..9eb71d95e 100644 --- a/reference/yaf/yaf_controller_abstract/redirect.xml +++ b/reference/yaf/yaf_controller_abstract/redirect.xml @@ -1,6 +1,6 @@ - + Yaf_Controller_Abstract::redirect @@ -10,12 +10,13 @@ &reftitle.description; - public boolYaf_Controller_Abstract::redirect + public boolnullYaf_Controller_Abstract::redirect stringurl - - 通过发送 302 标头重定向到 URL - + + 通过发送 Location 头(HTTP 状态 302)将客户端重定向到另一个 + URL。 + @@ -24,9 +25,9 @@ url - - 位置 URL - + + 要重定向到的 URL。 + @@ -34,12 +35,44 @@ &reftitle.returnvalues; + + 成功时返回 &true;,失败时返回 &false; / &null;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::redirect</methodname> 示例 + +getRequest()->getParam("user")) { + // 发送带 302 状态的 Location 头 + $this->redirect("http://www.example.com/account/login/"); + return false; // 跳过自动渲染 + } + } +} +?> +]]> + + + + + + &reftitle.seealso; - bool + + Yaf_Controller_Abstract::forward + Yaf_Response_Abstract::setRedirect + - - + Yaf_Controller_Abstract::render @@ -10,13 +10,14 @@ &reftitle.description; - protected stringYaf_Controller_Abstract::render + protected stringboolnullYaf_Controller_Abstract::render stringtpl - arrayparameters + arraynullparameters - - - + + 渲染视图脚本 tpl 并返回其输出,这点与 + Yaf_Controller_Abstract::display 不同。 + @@ -25,17 +26,17 @@ tpl - - - + + 视图脚本名,相对于视图路径。 + parameters - - - + + 本次渲染要导出到视图脚本的变量关联数组。 + @@ -43,11 +44,49 @@ &reftitle.returnvalues; - + + 成功时返回渲染结果(&string;),失败时返回 &false;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::render</methodname> 示例 + +disableView(); + + // 渲染 product/index.phtml 并返回输出, + // 而不是像 display() 那样直接发送 + $html = $this->render("product/index.phtml", array( + "products" => array("yaf", "php"), + )); + + // 后处理后设置为响应主体 + $this->getResponse()->setBody($html); + } +} +?> +]]> + + + + &reftitle.seealso; + + + Yaf_Controller_Abstract::display + Yaf_Dispatcher::autoRender + + + diff --git a/reference/yaf/yaf_controller_abstract/setviewpath.xml b/reference/yaf/yaf_controller_abstract/setviewpath.xml index 45e80bc59..26f8c6d3d 100644 --- a/reference/yaf/yaf_controller_abstract/setviewpath.xml +++ b/reference/yaf/yaf_controller_abstract/setviewpath.xml @@ -1,21 +1,21 @@ - + Yaf_Controller_Abstract::setViewpath - The setViewpath purpose + 设置视图路径 &reftitle.description; - public voidYaf_Controller_Abstract::setViewpath + public boolnullYaf_Controller_Abstract::setViewpath stringview_directory - - - + + 设置绑定到当前控制器的视图引擎的模板目录。 + @@ -24,9 +24,9 @@ view_directory - - - + + 存放视图模板的目录。 + @@ -34,11 +34,45 @@ &reftitle.returnvalues; - + + 成功时返回 &true;,失败时返回 &false; / &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Controller_Abstract::setViewpath</methodname> 示例 + +setViewpath(APPLICATION_PATH . "/themes/dark/views"); + } + + public function indexAction() { + // 渲染 application/themes/dark/views/product/index.phtml + $this->display("product/index.phtml"); + } +} +?> +]]> + + + + &reftitle.seealso; + + + Yaf_Controller_Abstract::getViewpath + + + diff --git a/reference/yaf/yaf_dispatcher/autorender.xml b/reference/yaf/yaf_dispatcher/autorender.xml index 86e4880b4..6be930243 100644 --- a/reference/yaf/yaf_dispatcher/autorender.xml +++ b/reference/yaf/yaf_dispatcher/autorender.xml @@ -1,6 +1,6 @@ - + Yaf_Dispatcher::autoRender @@ -10,18 +10,18 @@ &reftitle.description; - public Yaf_DispatcherYaf_Dispatcher::autoRender - boolflag + public Yaf_DispatcherboolYaf_Dispatcher::autoRender + boolnullflagnull - - Yaf_Dispatcher 将会在分发到来的请求后自动渲染,可以带 flag &true; - 调用此方法来阻止渲染。 - - - 也可以在操作中简单的返回 &false; 来阻止动作的自动渲染 - - - + + Yaf_Dispatcher 会在分发到来的请求之后自动渲染视图。 + 可以通过带 &false; 的 flag 调用此方法来阻止渲染。 + + + + 也可以简单地在一个动作中返回 &false;,来仅阻止该动作的自动渲染。 + + @@ -30,14 +30,14 @@ flag - - bool - - - 自 2.2.0 起。如果没有指定此参数,则会返回当前状态 - - - + + 是否开启自动渲染。 + + + + 自 Yaf 2.2.0 起,如果未给出该参数,则会返回当前状态。 + + @@ -45,9 +45,10 @@ &reftitle.returnvalues; - - - + + Yaf_Dispatcher 对象自身会在给出 flag 时 + 返回;未给出该参数时则返回 &boolean;,指示自动渲染是否开启。 + @@ -58,27 +59,30 @@ getRequest()->isXmlHttpRequest()) { - //do not call render for ajax request - //we will outpu a json string + // ajax 请求不调用渲染 + // 我们将输出 json 字符串 Yaf_Dispatcher::getInstance()->autoRender(FALSE); } - } - + } } ?> ]]> - &example.outputs.similar; - - - + + &reftitle.seealso; + + + Yaf_Dispatcher::flushInstantly + + + + - + Yaf_Dispatcher::catchException - 开启/关闭自动异常捕获 + 开启/关闭异常捕获 &reftitle.description; - public Yaf_DispatcherYaf_Dispatcher::catchException - boolflag + public Yaf_DispatcherboolYaf_Dispatcher::catchException + boolnullflagnull - - 当 application.dispatcher.throwException 开启的时候(也可以通过调用 Yaf_Dispatcher::throwException(TRUE) - 来开启),Yaf 会在错误发生时抛出 Exception 而不是触发错误。 - - - 如果开启了 Yaf_Dispatcher::catchException (可以通过设置 application.dispatcher.catchException 来开启),如果已经定义,所有未捕获的 - Exception 都将被 ErrorController::error 捕获。 - + + 当 + application.dispatcher.throwException + 开启时(也可以通过调用 + Yaf_Dispatcher::throwException 来开启),Yaf 会在错误 + 发生时抛出异常而不是触发错误。 + + + 如果通过此方法(或通过 + application.dispatcher.catchException) + 额外开启了异常捕获,所有未捕获的异常都会被捕获并分发到 + ErrorController::error(如果已定义)。 + @@ -30,9 +34,15 @@ flag - - bool - + + Yaf 是否应该捕获未捕获的异常并将它们分发到 + ErrorController::error。 + + + + 自 Yaf 2.2.0 起,如果未给出该参数,则会返回当前状态。 + + @@ -40,9 +50,10 @@ &reftitle.returnvalues; - - - + + Yaf_Dispatcher 对象自身会在给出 flag 时 + 返回;未给出该参数时则返回 &boolean;,指示异常捕获是否开启。 + @@ -51,15 +62,15 @@ <function>Yaf_Dispatcher::catchException</function> 示例 getCode()) { case YAF_ERR_NOTFOUND_MODULE: case YAF_ERR_NOTFOUND_CONTROLLER: @@ -72,7 +83,7 @@ class ErrorController extends Yaf_Controller_Abstract { echo 0, ":", $exception->getMessage(); break; } - } + } } ?> ]]> @@ -80,7 +91,8 @@ class ErrorController extends Yaf_Controller_Abstract { &example.outputs.similar; @@ -89,10 +101,12 @@ class ErrorController extends Yaf_Controller_Abstract { &reftitle.seealso; - - Yaf_Dispatcher::throwException - Yaf_Dispatcher::setErrorHandler - + + + Yaf_Dispatcher::throwException + Yaf_Dispatcher::setErrorHandler + + diff --git a/reference/yaf/yaf_dispatcher/construct.xml b/reference/yaf/yaf_dispatcher/construct.xml index b757caa54..3168f9bf0 100644 --- a/reference/yaf/yaf_dispatcher/construct.xml +++ b/reference/yaf/yaf_dispatcher/construct.xml @@ -1,6 +1,6 @@ - + Yaf_Dispatcher::__construct @@ -10,13 +10,14 @@ &reftitle.description; - public Yaf_Dispatcher::__construct + private Yaf_Dispatcher::__construct - - - - + + Yaf_Dispatcher 实现了单例模式,所以构造方法是私有的。 + 请使用 Yaf_Dispatcher::getInstance 来获取分发器实例, + 该实例由 Yaf_Application 创建。 + @@ -26,12 +27,47 @@ &reftitle.returnvalues; - + + &return.void; + + + + &reftitle.examples; + + <classname>Yaf_Dispatcher</classname> 是单例 + + +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + + Yaf_Dispatcher::getInstance + Yaf_Application::getDispatcher + - - + Yaf_Dispatcher::disableView - 关闭视图渲染 + 禁用视图渲染 &reftitle.description; - public boolYaf_Dispatcher::disableView + public Yaf_DispatchernullYaf_Dispatcher::disableView - - 禁用视图引擎,用于一些需要用户自己输出的应用程序 - - - 也可以在操作中简单的返回 &false; 来阻止动作的自动渲染 - - - + + 关闭视图渲染。通常用于那些自己产生输出的动作,例如返回 JSON 数据的动作。 + @@ -30,11 +25,41 @@ &reftitle.returnvalues; - + + 成功时返回 Yaf_Dispatcher 对象自身,应用未初始化时 + 返回 &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::disableView</methodname> 示例 + +disableView(); + +$app->run(); +?> +]]> + + + + &reftitle.seealso; + + + Yaf_Dispatcher::enableView + Yaf_Dispatcher::autoRender + + + diff --git a/reference/yaf/yaf_dispatcher/dispatch.xml b/reference/yaf/yaf_dispatcher/dispatch.xml index d2d8c4062..d580bbb21 100644 --- a/reference/yaf/yaf_dispatcher/dispatch.xml +++ b/reference/yaf/yaf_dispatcher/dispatch.xml @@ -1,6 +1,6 @@ - + Yaf_Dispatcher::dispatch @@ -10,26 +10,26 @@ &reftitle.description; - public Yaf_Response_AbstractYaf_Dispatcher::dispatch + public Yaf_Response_AbstractnullfalseYaf_Dispatcher::dispatch Yaf_Request_Abstractrequest + + 这个方法做的是 Yaf_Dispatcher 的繁重工作。它需要一个 + 请求对象。 + - Yaf_Dispatcher 的这个方法做的工作很繁重.它需要 request 对象。 + 分发过程有三个不同的事件: + + 路由 + 分发 + 响应 + + 当调用 Yaf_Dispatcher::dispatch 时,路由只发生一次, + 使用请求对象中的值。分发发生在循环中;一个请求可能会指明要分发多个动作,或者 + 控制器、插件可以重置请求对象来强制分发其它动作(参见 + Yaf_Plugin_Abstract)。当所有动作都执行完毕, + Yaf_Dispatcher 返回响应。 - - 分发过程有三个不同的事件: - - 路由 - 分发 - 响应 - - 当调用 Yaf_Dispatcher::dispatch 时,路由只发生一次,使用请求对象中的值。分发发生在循环中;一个请求可能会分发出多个动作,或者 - controller 或 plugin 可能重置请求对象来强制分发其它动作(参见 - Yaf_Plugin_Abstract)。当所有都执行完毕,Yaf_Dispatcher 返回响应。 - - - - @@ -38,9 +38,9 @@ request - - - + + 要分发的 Yaf_Request_Abstract 实例。 + @@ -48,11 +48,47 @@ &reftitle.returnvalues; + + 成功时返回 Yaf_Response_Abstract 实例,失败时返回 + &false;,应用未初始化时返回 &null;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::dispatch</methodname> 示例 + +bootstrap(); + +// 构造一个指向 ProductController::detailAction 的请求, +// 并手动分发它。 +$request = new Yaf_Request_Http("/product/detail/id/42"); + +$response = Yaf_Dispatcher::getInstance()->dispatch($request); + +if ($response instanceof Yaf_Response_Abstract) { + $response->response(); +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Application::run + Yaf_Plugin_Abstract + - - + Yaf_Dispatcher::enableView @@ -10,15 +10,13 @@ &reftitle.description; - public Yaf_DispatcherYaf_Dispatcher::enableView + public Yaf_DispatchernullYaf_Dispatcher::enableView - - - - - - + + 开启视图渲染。与 Yaf_Dispatcher::disableView 作用 + 相反。 + @@ -28,11 +26,48 @@ &reftitle.returnvalues; - + + 成功时返回 Yaf_Dispatcher 对象自身,应用未初始化时 + 返回 &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::enableView</methodname> 示例 + +getModuleName() === "Api") { + // API 动作自己输出 JSON,不需要视图渲染 + $dispatcher->disableView(); + } else { + $dispatcher->enableView(); + } + } +} +?> +]]> + + + + &reftitle.seealso; + + + Yaf_Dispatcher::disableView + Yaf_Dispatcher::autoRender + + + diff --git a/reference/yaf/yaf_dispatcher/flushinstantly.xml b/reference/yaf/yaf_dispatcher/flushinstantly.xml index 0f551e653..c11b4b9b1 100644 --- a/reference/yaf/yaf_dispatcher/flushinstantly.xml +++ b/reference/yaf/yaf_dispatcher/flushinstantly.xml @@ -1,6 +1,6 @@ - + Yaf_Dispatcher::flushInstantly @@ -10,15 +10,14 @@ &reftitle.description; - public Yaf_DispatcherYaf_Dispatcher::flushInstantly - boolflag + public Yaf_DispatcherboolYaf_Dispatcher::flushInstantly + boolnullflagnull - - - - - - + + 打开/关闭即时刷新。开启时(默认),一旦响应主体通过 + Yaf_Response_Abstract::setBody 设置,就会立即被刷新 + (输出)到客户端。 + @@ -27,14 +26,14 @@ flag - - bool - - - 自 2.2.0 起,如果未指定参数,然后返回当前状态 - - - + + 是否即时刷新响应主体。 + + + + 自 Yaf 2.2.0 起,如果未给出该参数,则会返回当前状态。 + + @@ -42,11 +41,51 @@ &reftitle.returnvalues; - + + Yaf_Dispatcher 对象自身会在给出 flag 时 + 返回;未给出该参数时则返回 &boolean;,指示当前状态。 + + - + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::flushInstantly</methodname> 示例 + +flushInstantly(false); + +// 自 Yaf 2.2.0 起,不带参数调用会查询当前状态 +var_dump($dispatcher->flushInstantly()); + +$app->run(); +?> +]]> + + &example.outputs.similar; + + + + + + &reftitle.seealso; + + + Yaf_Dispatcher::returnResponse + Yaf_Response_Abstract::setBody + + + diff --git a/reference/yaf/yaf_dispatcher/getapplication.xml b/reference/yaf/yaf_dispatcher/getapplication.xml index 0fa1d8786..efc8cc918 100644 --- a/reference/yaf/yaf_dispatcher/getapplication.xml +++ b/reference/yaf/yaf_dispatcher/getapplication.xml @@ -1,24 +1,22 @@ - + Yaf_Dispatcher::getApplication - 检索应用程序 + 获取应用实例 &reftitle.description; - public Yaf_ApplicationYaf_Dispatcher::getApplication + public Yaf_ApplicationnullYaf_Dispatcher::getApplication - - 检索 Yaf_Application 实例,等同于 Yaf_Application::app。 - - - - + + 获取 Yaf_Application 实例。与 + Yaf_Application::app 相同。 + @@ -28,16 +26,41 @@ &reftitle.returnvalues; - + + Yaf_Application 实例,如果尚未初始化应用则返回 + &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::getApplication</methodname> 示例 + +getApplication() === Yaf_Application::app()); +?> +]]> + + &example.outputs.similar; + + + + &reftitle.seealso; - - Yaf_Application::app - + + + Yaf_Application::app + + diff --git a/reference/yaf/yaf_dispatcher/getdefaultaction.xml b/reference/yaf/yaf_dispatcher/getdefaultaction.xml new file mode 100644 index 000000000..e02df603a --- /dev/null +++ b/reference/yaf/yaf_dispatcher/getdefaultaction.xml @@ -0,0 +1,92 @@ + + + + + + Yaf_Dispatcher::getDefaultAction + 获取默认 action 名称 + + + + &reftitle.description; + + public stringnullYaf_Dispatcher::getDefaultAction + + + + 获取默认 action 名称,当无法从请求 URI 中解析出 action 名称时使用。 + 默认为 "index"。 + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + 返回默认 action 名称,如果应用尚未初始化则返回 &null;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::getDefaultAction</methodname> 示例 + +getDefaultAction()); + +$dispatcher->setDefaultAction("main"); +var_dump($dispatcher->getDefaultAction()); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + + Yaf_Dispatcher::setDefaultAction + + + + + + + diff --git a/reference/yaf/yaf_dispatcher/getdefaultcontroller.xml b/reference/yaf/yaf_dispatcher/getdefaultcontroller.xml new file mode 100644 index 000000000..6b4a0d6b2 --- /dev/null +++ b/reference/yaf/yaf_dispatcher/getdefaultcontroller.xml @@ -0,0 +1,86 @@ + + + + + + Yaf_Dispatcher::getDefaultController + 获取默认控制器名称 + + + + &reftitle.description; + + public stringnullYaf_Dispatcher::getDefaultController + + + + 获取默认控制器名称,当无法从请求 URI 中解析出控制器名称时使用。 + 默认为 "Index"。 + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + 返回默认控制器名称,如果应用尚未初始化则返回 &null;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::getDefaultController</methodname> 示例 + +getDefaultController()); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + + Yaf_Dispatcher::setDefaultController + + + + + + + diff --git a/reference/yaf/yaf_dispatcher/getdefaultmodule.xml b/reference/yaf/yaf_dispatcher/getdefaultmodule.xml new file mode 100644 index 000000000..bc4ad15fc --- /dev/null +++ b/reference/yaf/yaf_dispatcher/getdefaultmodule.xml @@ -0,0 +1,86 @@ + + + + + + Yaf_Dispatcher::getDefaultModule + 获取默认模块名称 + + + + &reftitle.description; + + public stringnullYaf_Dispatcher::getDefaultModule + + + + 获取默认模块名称,当无法从请求 URI 中解析出模块名称时使用。 + 默认为 "Index"。 + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + 返回默认模块名称,如果应用尚未初始化则返回 &null;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::getDefaultModule</methodname> 示例 + +getDefaultModule()); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + + Yaf_Dispatcher::setDefaultModule + + + + + + + diff --git a/reference/yaf/yaf_dispatcher/getinstance.xml b/reference/yaf/yaf_dispatcher/getinstance.xml index f9cd44df8..268007611 100644 --- a/reference/yaf/yaf_dispatcher/getinstance.xml +++ b/reference/yaf/yaf_dispatcher/getinstance.xml @@ -1,24 +1,21 @@ - + Yaf_Dispatcher::getInstance - 获取当前的Yaf_Dispatcher实例 + 获取分发器实例 &reftitle.description; - public static Yaf_DispatcherYaf_Dispatcher::getInstance + public static Yaf_DispatchernullYaf_Dispatcher::getInstance - - - - - - + + 获取唯一的 Yaf_Dispatcher 实例。 + @@ -28,11 +25,44 @@ &reftitle.returnvalues; - + + Yaf_Dispatcher 实例,如果尚未初始化 + Yaf_Application 则返回 &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::getInstance</methodname> 示例 + + +]]> + + &example.outputs.similar; + + + + + + &reftitle.seealso; + + + Yaf_Application::getDispatcher + + + diff --git a/reference/yaf/yaf_dispatcher/getrequest.xml b/reference/yaf/yaf_dispatcher/getrequest.xml index d27f09944..1ad2fcf82 100644 --- a/reference/yaf/yaf_dispatcher/getrequest.xml +++ b/reference/yaf/yaf_dispatcher/getrequest.xml @@ -1,24 +1,21 @@ - + Yaf_Dispatcher::getRequest - 检索请求实例 + 获取请求实例 &reftitle.description; - public Yaf_Request_AbstractYaf_Dispatcher::getRequest + public Yaf_Request_AbstractnullYaf_Dispatcher::getRequest - - - - - - + + 获取分发器持有的请求对象。 + @@ -28,11 +25,52 @@ &reftitle.returnvalues; - + + Yaf_Request_Abstract 实例,如果应用未初始化则返回 + &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::getRequest</methodname> 示例 + +getRequest(); + + // 分发器持有的正是传递给控制器的同一个请求对象 + var_dump($request === $this->getRequest()); + + return false; + } +} +?> +]]> + + &example.outputs.similar; + + + + + + &reftitle.seealso; + + + Yaf_Dispatcher::setRequest + Yaf_Request_Abstract + + + diff --git a/reference/yaf/yaf_dispatcher/getresponse.xml b/reference/yaf/yaf_dispatcher/getresponse.xml new file mode 100644 index 000000000..77184149b --- /dev/null +++ b/reference/yaf/yaf_dispatcher/getresponse.xml @@ -0,0 +1,88 @@ + + + + + + Yaf_Dispatcher::getResponse + 获取响应对象 + + + + &reftitle.description; + + public Yaf_Response_AbstractnullYaf_Dispatcher::getResponse + + + + 获取 dispatcher 使用的 Yaf_Response_Abstract 实例。 + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + 返回 Yaf_Response_Abstract 实例, + 如果应用尚未初始化则返回 &null;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::getResponse</methodname> 示例 + +getResponse()->setHeader( + "Content-Type", "text/html; charset=utf-8" + ); + } +} +?> +]]> + + + + + + &reftitle.seealso; + + + Yaf_Dispatcher::setResponse + Yaf_Response_Abstract + + + + + + + diff --git a/reference/yaf/yaf_dispatcher/getrouter.xml b/reference/yaf/yaf_dispatcher/getrouter.xml index 49d576b21..bb6fcb1f9 100644 --- a/reference/yaf/yaf_dispatcher/getrouter.xml +++ b/reference/yaf/yaf_dispatcher/getrouter.xml @@ -1,24 +1,21 @@ - + Yaf_Dispatcher::getRouter - 检索路由实例 + 获取路由器实例 &reftitle.description; - public Yaf_RouterYaf_Dispatcher::getRouter + public Yaf_RouternullYaf_Dispatcher::getRouter - - - - - - + + 获取分发器用来路由请求的 Yaf_Router 实例。 + @@ -28,11 +25,45 @@ &reftitle.returnvalues; - + + Yaf_Router 实例,如果应用未初始化则返回 &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::getRouter</methodname> 示例 + +getRouter(); + + // 将 /product/42 路由到 ProductController::detailAction + $router->addRoute("product", new Yaf_Route_Rewrite( + "product/:id", + array("controller" => "product", "action" => "detail") + )); + } +} +?> +]]> + + + + &reftitle.seealso; + + + Yaf_Router + + + diff --git a/reference/yaf/yaf_dispatcher/initview.xml b/reference/yaf/yaf_dispatcher/initview.xml index d7d4d8eb8..b242aa0be 100644 --- a/reference/yaf/yaf_dispatcher/initview.xml +++ b/reference/yaf/yaf_dispatcher/initview.xml @@ -1,25 +1,23 @@ - + Yaf_Dispatcher::initView - 初始化视图并返回 + 初始化视图并返回它 &reftitle.description; - public Yaf_View_InterfaceYaf_Dispatcher::initView + public Yaf_View_InterfacenullfalseYaf_Dispatcher::initView stringtemplates_dir - arrayoptions + arraynulloptionsnull - - - - - - + + 使用给定的模板目录初始化并返回一个绑定到分发器的 + Yaf_View_Simple 实例。 + @@ -28,17 +26,18 @@ templates_dir - - - + + 存放视图模板的目录。 + options - - - + + 传递给视图引擎的选项,参见 + Yaf_View_Simple::__construct。 + @@ -46,11 +45,42 @@ &reftitle.returnvalues; - + + 成功时返回 Yaf_View_Interface 实例,失败时返回 + &false; / &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::initView</methodname> 示例 + +initView( + dirname(__FILE__) . "/application/views", + array("tpl_suffix" => ".html") +); + +$view->assign("title", "Home"); +?> +]]> + + + + &reftitle.seealso; + + + Yaf_Dispatcher::setView + Yaf_View_Simple + + + diff --git a/reference/yaf/yaf_dispatcher/registerplugin.xml b/reference/yaf/yaf_dispatcher/registerplugin.xml index 40bc6db96..b40a135c2 100644 --- a/reference/yaf/yaf_dispatcher/registerplugin.xml +++ b/reference/yaf/yaf_dispatcher/registerplugin.xml @@ -1,6 +1,6 @@ - + Yaf_Dispatcher::registerPlugin @@ -10,16 +10,14 @@ &reftitle.description; - public Yaf_DispatcherYaf_Dispatcher::registerPlugin + public Yaf_DispatchernullfalseYaf_Dispatcher::registerPlugin Yaf_Plugin_Abstractplugin - - 注册插件(参见 Yaf_Plugin_Abstract)。通常在 - Bootstrap 中注册插件(参见 Yaf_Bootstrap_Abstract)。 - - - - + + 注册插件(参见 Yaf_Plugin_Abstract)。通常插件在 + Bootstrap 中注册(参见 + Yaf_Bootstrap_Abstract)。 + @@ -28,9 +26,9 @@ plugin - - - + + 一个 Yaf_Plugin_Abstract 实例。 + @@ -38,9 +36,10 @@ &reftitle.returnvalues; - - - + + 成功时返回 Yaf_Dispatcher 对象自身,失败时返回 + &false; / &null;。 + @@ -53,10 +52,10 @@ class Bootstrap extends Yaf_Bootstrap_Abstract { public function _initPlugin(Yaf_Dispatcher $dispatcher) { /** - * Yaf assumes plugin scripts under [application.directory] . "/plugins" - * for this case, it will be: + * Yaf 假定插件脚本位于 [application.directory] . "/plugins" + * 对于本例,路径为: * [application.directory] . "/plugins/" . "User" . [application.ext] - */ + */ $user = new UserPlugin(); $dispatcher->registerPlugin($user); } @@ -69,12 +68,12 @@ class Bootstrap extends Yaf_Bootstrap_Abstract { &reftitle.seealso; - - Yaf_Plugin_Abstract - - - Yaf_Bootstrap_Abstract - + + + Yaf_Plugin_Abstract + Yaf_Bootstrap_Abstract + + diff --git a/reference/yaf/yaf_dispatcher/returnresponse.xml b/reference/yaf/yaf_dispatcher/returnresponse.xml index 1802826d1..10d0ce969 100644 --- a/reference/yaf/yaf_dispatcher/returnresponse.xml +++ b/reference/yaf/yaf_dispatcher/returnresponse.xml @@ -1,24 +1,24 @@ - + Yaf_Dispatcher::returnResponse - The returnResponse purpose + 打开/关闭返回响应 &reftitle.description; - public Yaf_DispatcherYaf_Dispatcher::returnResponse - boolflag + public Yaf_DispatcherboolYaf_Dispatcher::returnResponse + boolflagfalse - - - - - - + + 切换 Yaf_Application::run 是返回响应对象而不是直接 + 发送给客户端。开启后,$response = $app->run() 将给出 + Yaf_Response_Abstract 实例,以便对其做进一步处理。 + 自 Yaf 3.2.2 起可用。 + @@ -27,9 +27,14 @@ flag - - - + + 是否返回响应而不是直接发送。 + + + + 如果未给出该参数,则会返回当前状态。 + + @@ -37,11 +42,43 @@ &reftitle.returnvalues; - + + Yaf_Dispatcher 对象自身会在给出 flag 时 + 返回;未给出该参数时则返回 &boolean;,指示当前状态。 + + - + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::returnResponse</methodname> 示例 + +returnResponse(true); + +// 现在 $app->run() 会返回响应而不是直接刷新输出 +$response = $app->run(); + +$response->setHeader("X-Generator", "Yaf"); +$response->response(); +?> +]]> + + + + &reftitle.seealso; + + + Yaf_Application::run + Yaf_Response_Abstract + + + diff --git a/reference/yaf/yaf_dispatcher/setdefaultaction.xml b/reference/yaf/yaf_dispatcher/setdefaultaction.xml index c35e13c0d..dd49a21db 100644 --- a/reference/yaf/yaf_dispatcher/setdefaultaction.xml +++ b/reference/yaf/yaf_dispatcher/setdefaultaction.xml @@ -1,24 +1,22 @@ - + Yaf_Dispatcher::setDefaultAction - 设置默认动作名 + 更改默认动作名 &reftitle.description; - public Yaf_DispatcherYaf_Dispatcher::setDefaultAction + public Yaf_DispatchernullfalseYaf_Dispatcher::setDefaultAction stringaction - - - - - - + + 更改当无法从请求 URI 中提取动作名时所使用的动作名。该名称会被规范化为 + 小写。 + @@ -27,9 +25,9 @@ action - - - + + 动作的名称。 + @@ -37,11 +35,42 @@ &reftitle.returnvalues; - + + 成功时返回 Yaf_Dispatcher 对象自身,如果应用未初始化 + 则返回 &false;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::setDefaultAction</methodname> 示例 + +setDefaultAction("main"); + +$app->run(); +?> +]]> + + + + &reftitle.seealso; + + + Yaf_Dispatcher::setDefaultModule + Yaf_Dispatcher::setDefaultController + Yaf_Dispatcher::getDefaultAction + + + diff --git a/reference/yaf/yaf_dispatcher/setdefaultcontroller.xml b/reference/yaf/yaf_dispatcher/setdefaultcontroller.xml index 754f6ecb1..83da1e0b3 100644 --- a/reference/yaf/yaf_dispatcher/setdefaultcontroller.xml +++ b/reference/yaf/yaf_dispatcher/setdefaultcontroller.xml @@ -1,24 +1,22 @@ - + Yaf_Dispatcher::setDefaultController - 设置默认控制器名 + 更改默认控制器名 &reftitle.description; - public Yaf_DispatcherYaf_Dispatcher::setDefaultController + public Yaf_DispatchernullfalseYaf_Dispatcher::setDefaultController stringcontroller - - - - - - + + 更改当无法从请求 URI 中提取控制器名时所使用的控制器名。该名称会被规范化为 + 首字母大写。 + @@ -27,9 +25,9 @@ controller - - - + + 控制器的名称。 + @@ -37,11 +35,42 @@ &reftitle.returnvalues; - + + 成功时返回 Yaf_Dispatcher 对象自身,如果应用未初始化 + 则返回 &false;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::setDefaultController</methodname> 示例 + +setDefaultController("home"); + +$app->run(); +?> +]]> + + + + &reftitle.seealso; + + + Yaf_Dispatcher::setDefaultModule + Yaf_Dispatcher::setDefaultAction + Yaf_Dispatcher::getDefaultController + + + diff --git a/reference/yaf/yaf_dispatcher/setdefaultmodule.xml b/reference/yaf/yaf_dispatcher/setdefaultmodule.xml index 51aaf56a8..7e94d339d 100644 --- a/reference/yaf/yaf_dispatcher/setdefaultmodule.xml +++ b/reference/yaf/yaf_dispatcher/setdefaultmodule.xml @@ -1,24 +1,22 @@ - + Yaf_Dispatcher::setDefaultModule - 设置默认模块名 + 更改默认模块名 &reftitle.description; - public Yaf_DispatcherYaf_Dispatcher::setDefaultModule + public Yaf_DispatchernullfalseYaf_Dispatcher::setDefaultModule stringmodule - - - - - - + + 更改当无法从请求 URI 中提取模块名时所使用的模块名。该模块必须是已注册的, + 参见 Yaf_Application::getModules。 + @@ -27,9 +25,9 @@ module - - - + + 已注册模块的名称。 + @@ -37,11 +35,48 @@ &reftitle.returnvalues; - + + 成功时返回 Yaf_Dispatcher 对象自身;如果给定的模块未注册或应用未初始化,则返回 &false;(模块未注册时会触发一个 YAF_ERR_TYPE_ERROR);其他情况返回 &null;。 + + - + + &reftitle.errors; + + YAF_ERR_TYPE_ERROR 错误会在 module 不是已注册的模块名时触发。 + + + + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::setDefaultModule</methodname> 示例 + +setDefaultModule("Home"); + +$app->run(); +?> +]]> + + + + &reftitle.seealso; + + + Yaf_Dispatcher::setDefaultController + Yaf_Dispatcher::setDefaultAction + Yaf_Dispatcher::getDefaultModule + + + diff --git a/reference/yaf/yaf_dispatcher/seterrorhandler.xml b/reference/yaf/yaf_dispatcher/seterrorhandler.xml index cd0aae466..8ffa5ee83 100644 --- a/reference/yaf/yaf_dispatcher/seterrorhandler.xml +++ b/reference/yaf/yaf_dispatcher/seterrorhandler.xml @@ -1,26 +1,28 @@ - + Yaf_Dispatcher::setErrorHandler - 设置错误处理 + 设置错误处理器 &reftitle.description; - public Yaf_DispatcherYaf_Dispatcher::setErrorHandler - callcallback - interror_types + public Yaf_DispatchernullfalseYaf_Dispatcher::setErrorHandler + mixedcallback + interror_types0 - - 为 Yaf 设置错误处理程序,当 application.dispatcher.throwException - 关闭时,Yaf 将在发生意外错误时触发可捕获错误。 - - - 因此,将在错误出现时调用该错误处理程序。 - + + 为 Yaf 设置错误处理器。当 + application.dispatcher.throwException + 关闭时,Yaf 将在发生意外错误时触发可捕获的错误。 + + + 此方法是 set_error_handler 的包装;每当引发此类错误时, + 都会调用该错误处理器。 + @@ -29,17 +31,18 @@ callback - - 可调用的回调 - + + 可调用的回调,语义与传给 set_error_handler 的回调相同。 + error_types - - - + + 要处理的错误类型,即 error_levels 参数, + 与 set_error_handler 的同名参数语义相同。默认处理所有错误类型。 + @@ -47,18 +50,45 @@ &reftitle.returnvalues; - + + 成功时返回 Yaf_Dispatcher 对象本身; + 调用 set_error_handler 失败时返回 &false;; + 应用未初始化时返回 &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::setErrorHandler</methodname> 示例 + +setErrorHandler(function ($errno, $errstr) { + // 将错误路由到 ErrorController::errorAction + $request = Yaf_Dispatcher::getInstance()->getRequest(); + $request->setControllerName("Error"); + $request->setActionName("error"); +}); + +$app->run(); +?> +]]> + + &reftitle.seealso; - - Yaf_Dispatcher::throwException - Yaf_Application::getLastErrorNo - Yaf_Application::getLastErrorMsg - + + + Yaf_Dispatcher::throwException + Yaf_Application::getLastErrorNo + Yaf_Application::getLastErrorMsg + + diff --git a/reference/yaf/yaf_dispatcher/setrequest.xml b/reference/yaf/yaf_dispatcher/setrequest.xml index e754361e3..7305732a4 100644 --- a/reference/yaf/yaf_dispatcher/setrequest.xml +++ b/reference/yaf/yaf_dispatcher/setrequest.xml @@ -1,35 +1,34 @@ - + Yaf_Dispatcher::setRequest - The setRequest purpose + 设置请求对象 &reftitle.description; - public Yaf_DispatcherYaf_Dispatcher::setRequest + public Yaf_DispatchernullYaf_Dispatcher::setRequest Yaf_Request_Abstractrequest - - - - - - + + 设置调度器使用的请求对象。这样就可以使用自定义的请求实现, + 而不是内置的 Yaf_Request_Http 或 + Yaf_Request_Simple。 + &reftitle.parameters; - plugin + request - - - + + Yaf_Request_Abstract 实例。 + @@ -37,11 +36,43 @@ &reftitle.returnvalues; - + + 成功时返回 Yaf_Dispatcher 对象本身, + 应用未初始化时返回 &null;。 + + - + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::setRequest</methodname> 示例 + +setRequest($request); + +$app->run(); +?> +]]> + + + + &reftitle.seealso; + + + Yaf_Dispatcher::getRequest + Yaf_Request_Abstract + + + diff --git a/reference/yaf/yaf_dispatcher/setresponse.xml b/reference/yaf/yaf_dispatcher/setresponse.xml new file mode 100644 index 000000000..d79aa7a36 --- /dev/null +++ b/reference/yaf/yaf_dispatcher/setresponse.xml @@ -0,0 +1,100 @@ + + + + + + Yaf_Dispatcher::setResponse + 设置响应对象 + + + + &reftitle.description; + + public Yaf_DispatchernullYaf_Dispatcher::setResponse + Yaf_Response_Abstractresponse + + + 设置调度器使用的响应对象。这允许使用自定义的响应实现来替代内置实现。 + + + + + &reftitle.parameters; + + + response + + + 一个 Yaf_Response_Abstract 实例。 + + + + + + + + &reftitle.returnvalues; + + 成功时返回 Yaf_Dispatcher 对象自身,如果应用未初始化则返回 &null;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Dispatcher::setResponse</methodname> 示例 + +setResponse(new ApiResponse()); + +$app->run(); +?> +]]> + + + + + + &reftitle.seealso; + + + Yaf_Dispatcher::getResponse + Yaf_Dispatcher::setRequest + + + + + + + diff --git a/reference/yaf/yaf_dispatcher/setview.xml b/reference/yaf/yaf_dispatcher/setview.xml index 66a4a384d..b1e93f531 100644 --- a/reference/yaf/yaf_dispatcher/setview.xml +++ b/reference/yaf/yaf_dispatcher/setview.xml @@ -1,6 +1,6 @@ - + @@ -11,11 +11,12 @@ &reftitle.description; - public Yaf_DispatcherYaf_Dispatcher::setView + public Yaf_DispatchernullYaf_Dispatcher::setView Yaf_View_Interfaceview - 如果想使用自定义视图引擎而不是 Yaf_View_Simple,此方法会帮你解决这个问题。 + 如果想使用自定义视图引擎而不是 Yaf_View_Simple, + 此方法可以满足你的需求。 @@ -36,9 +37,10 @@ &reftitle.returnvalues; - - - + + 成功时返回 Yaf_Dispatcher 对象本身, + 应用未初始化时返回 &null;。 + @@ -57,7 +59,7 @@ class Smarty_Adapter implements Yaf_View_Interface * @var Smarty */ public $_smarty; - + /** * Constructor * @@ -67,16 +69,16 @@ class Smarty_Adapter implements Yaf_View_Interface */ public function __construct($tmplPath = null, $extraParams = array()) { $this->_smarty = new Smarty; - + if (null !== $tmplPath) { $this->setScriptPath($tmplPath); } - + foreach ($extraParams as $key => $value) { $this->_smarty->$key = $value; } } - + /** * Set the path to the templates * @@ -89,10 +91,10 @@ class Smarty_Adapter implements Yaf_View_Interface $this->_smarty->template_dir = $path; return; } - + throw new Exception('Invalid path provided'); } - + /** * Assign a variable to the template * @@ -104,7 +106,7 @@ class Smarty_Adapter implements Yaf_View_Interface { $this->_smarty->assign($key, $val); } - + /** * Allows testing with empty() and isset() to work * @@ -115,7 +117,7 @@ class Smarty_Adapter implements Yaf_View_Interface { return (null !== $this->_smarty->get_template_vars($key)); } - + /** * Allows unset() on object properties to work * @@ -126,7 +128,7 @@ class Smarty_Adapter implements Yaf_View_Interface { $this->_smarty->clear_assign($key); } - + /** * Assign variables to the template * @@ -145,10 +147,10 @@ class Smarty_Adapter implements Yaf_View_Interface $this->_smarty->assign($spec); return; } - + $this->_smarty->assign($spec, $value); } - + /** * Clear all assigned variables * @@ -161,7 +163,7 @@ class Smarty_Adapter implements Yaf_View_Interface public function clearVars() { $this->_smarty->clear_all_assign(); } - + /** * Processes a template and returns the output. * @@ -222,10 +224,12 @@ class Bootstrap extends Yaf_Bootstrap_Abstract { &reftitle.seealso; - - Yaf_View_Interface - Yaf_View_Simple - + + + Yaf_View_Interface + Yaf_View_Simple + + diff --git a/reference/yaf/yaf_dispatcher/throwexception.xml b/reference/yaf/yaf_dispatcher/throwexception.xml index 47493b542..6c3f89f32 100644 --- a/reference/yaf/yaf_dispatcher/throwexception.xml +++ b/reference/yaf/yaf_dispatcher/throwexception.xml @@ -1,6 +1,6 @@ - + Yaf_Dispatcher::throwException @@ -10,16 +10,18 @@ &reftitle.description; - public Yaf_DispatcherYaf_Dispatcher::throwException - boolflag + public Yaf_DispatcherboolYaf_Dispatcher::throwException + boolnullflagnull - - 当意外的错误发生的时候,开启/关闭异常抛出。当开启的时候,Yaf 将会抛出异常而不是触发可捕捉的错误。 - - - 你也可以使用 - application.dispatcher.throwException 来达到相同的目的。 - + + 当发生意外错误时,开启/关闭异常抛出。开启后,Yaf 将抛出异常 + 而不是触发可捕获的错误。 + + + 你也可以使用 + application.dispatcher.throwException + 来达到相同的目的。 + @@ -28,9 +30,14 @@ flag - - bool - + + Yaf 是否应该在发生错误时抛出异常。 + + + + 自 Yaf 2.2.0 起,如果未提供该参数,则返回当前的状态。 + + @@ -38,19 +45,19 @@ &reftitle.returnvalues; - - - + + 返回 Yaf_Dispatcher 对象本身(提供了 flag 时); + 未提供时,返回一个指示异常抛出是否开启的 &boolean; 值。 + &reftitle.examples; - <function>Yaf_Dispatcher::throwexception</function> 示例 + <function>Yaf_Dispatcher::throwException</function> 示例 array( 'directory' => dirname(__FILE__), @@ -76,11 +83,10 @@ string(59) "Could not find controller script /tmp/controllers/Index.php" - <function>Yaf_Dispatcher::throwexception</function> 示例 + <function>Yaf_Dispatcher::throwException</function> 示例 array( 'directory' => dirname(__FILE__), @@ -105,10 +111,12 @@ PHP Catchable fatal error: Yaf_Application::run(): Could not find controller sc &reftitle.seealso; - - Yaf_Dispatcher::catchException - Yaf_Exception - + + + Yaf_Dispatcher::catchException + Yaf_Exception + + diff --git a/reference/yaf/yaf_exception/construct.xml b/reference/yaf/yaf_exception/construct.xml index 73667fcd4..cb092d9a0 100644 --- a/reference/yaf/yaf_exception/construct.xml +++ b/reference/yaf/yaf_exception/construct.xml @@ -1,38 +1,76 @@ - + - Yaf_Exception::__construct - The __construct purpose +Yaf_Exception::__construct +构造一个 Yaf 异常 &reftitle.description; public Yaf_Exception::__construct - + stringmessage"" + intcode0 - - - - - &warn.undocumented.func; - + 构造一个新的 Yaf_Exceptioncode 携带用于标识失败类型的 Yaf 错误码,并通过 Exception::getCode 获取。 &reftitle.parameters; - &no.function.parameters; + + + message + +异常信息。 + + + + code + +Yaf 错误码。 + + + &reftitle.returnvalues; - - - + 没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Exception::__construct</methodname> 示例 + + +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Exception + Yaf_Exception::getPrevious + Yaf_Exception_RouterFailed + + diff --git a/reference/yaf/yaf_exception/getprevious.xml b/reference/yaf/yaf_exception/getprevious.xml index 796ca95d8..03ea43fde 100644 --- a/reference/yaf/yaf_exception/getprevious.xml +++ b/reference/yaf/yaf_exception/getprevious.xml @@ -1,24 +1,19 @@ - + - Yaf_Exception::getPrevious - The getPrevious purpose +Yaf_Exception::getPrevious +获取前一个异常 &reftitle.description; - public voidYaf_Exception::getPrevious + public ThrowableYaf_Exception::getPrevious - - - - - &warn.undocumented.func; - + 此方法继承自 Throwable 基类体系,如果存在前一个异常(链式关联的),则将其返回。 @@ -28,11 +23,52 @@ &reftitle.returnvalues; - - - + 如果存在,返回前一个 Throwable,否则返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_Exception::getPrevious</methodname> 示例 + +getCode()); + $prev = $e->getPrevious(); + var_dump(get_class($prev)); + var_dump($prev->getMessage()); + var_dump($prev->getCode()); +} +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Exception::__construct + Yaf_Exception + + diff --git a/reference/yaf/yaf_loader/autoload.xml b/reference/yaf/yaf_loader/autoload.xml index 4afdc8396..f19ce8937 100644 --- a/reference/yaf/yaf_loader/autoload.xml +++ b/reference/yaf/yaf_loader/autoload.xml @@ -1,39 +1,69 @@ - + - Yaf_Loader::autoload - The autoload purpose +Yaf_Loader::autoload +自动加载类 &reftitle.description; - public voidYaf_Loader::autoload - + public boolYaf_Loader::autoload + stringclass_name - - - - - &warn.undocumented.func; - + 根据类名加载类。类名会被转换为文件路径:下划线和命名空间分隔符会转换为目录分隔符。 + MVC 类(名称中含有 _Controller_Action_Plugin 的类)在应用目录下查找,其他类则在库目录下查找:本地注册类前缀在本地库中查找,否则在全局库中查找。 &reftitle.parameters; - &no.function.parameters; + + + class_name + +要加载的类名。 + + + - &reftitle.returnvalues; - - - +成功时返回 &true;,失败时返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Loader::autoload</methodname> 示例 + +autoload("Catalog_PriceService"); + +/* MVC 类在应用目录下查找 */ +$loader->autoload("ProductController"); +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Loader::import + Yaf_Loader::registerLocalNamespace + + - + - Yaf_Loader::clearLocalNamespace - The clearLocalNamespace purpose +Yaf_Loader::clearLocalNamespace +清除已注册的命名空间 &reftitle.description; - public voidYaf_Loader::clearLocalNamespace + public boolYaf_Loader::clearLocalNamespace - - - - - &warn.undocumented.func; - + 清除所有已注册的本地命名空间。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +成功时返回 &true;。 + + &reftitle.examples; + + <methodname>Yaf_Loader::clearLocalNamespace</methodname> 示例 + +registerLocalNamespace(array("Models", "Services")); +var_dump(count($loader->getLocalNamespace())); + +$loader->clearLocalNamespace(); +var_dump(count($loader->getLocalNamespace())); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Loader::registerLocalNamespace + Yaf_Loader::getLocalNamespace + + - + - Yaf_Loader::__construct - The __construct purpose +Yaf_Loader::__construct +构造函数是私有的 @@ -13,27 +13,56 @@ private Yaf_Loader::__construct - - - - - &warn.undocumented.func; - + 构造一个新的加载器。该构造函数是私有的;Yaf_Loader 是单例。请使用 Yaf_Loader::getInstance 获取实例。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + 获取 <classname>Yaf_Loader</classname> 单例 + +getMessage(), PHP_EOL; +} +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Loader::getInstance + + - + - Yaf_Loader::getInstance - The getInstance purpose +Yaf_Loader::getInstance +获取 Yaf_Loader 实例 &reftitle.description; - public static voidYaf_Loader::getInstance - + public static Yaf_LoaderfalseYaf_Loader::getInstance + stringlocal_library_pathnull + stringglobal_library_pathnull - - - - - &warn.undocumented.func; - + 获取 Yaf_Loader 单例实例。 + 如果指定了库路径,则会应用到已存在的实例上。 &reftitle.parameters; - &no.function.parameters; + + + local_library_path + +本地库目录,通常与 application.library.directory ini 配置项相同。 + + + + global_library_path + +全局库目录。未指定时使用本地库目录。 + + + - &reftitle.returnvalues; - - - +返回 Yaf_Loader 实例;如果加载器尚未初始化(通常由 Yaf_Application 完成),则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Loader::getInstance</methodname> 示例 + +registerNamespace("Vendor", APPLICATION_PATH . "/library/Vendor"); +?> +]]> + + + + 初始化之前的 <methodname>Yaf_Loader::getInstance</methodname> + + +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Loader::setLibraryPath + Yaf_Loader::getLibraryPath + + - + Yaf_Loader::getLibraryPath @@ -10,30 +10,64 @@ &reftitle.description; - public Yaf_LoaderYaf_Loader::getLibraryPath - boolis_global&false; + public stringYaf_Loader::getLibraryPath + boolis_globalfalse - - - - - &warn.undocumented.func; - + 获取库目录。 &reftitle.parameters; - &no.function.parameters; + + + is_global + +是否获取全局库目录而不是本地库目录。 + + + - &reftitle.returnvalues; - - - +返回库目录字符串;如果请求的是全局库目录但其未设置,则返回空字符串。 + + &reftitle.examples; + + <methodname>Yaf_Loader::getLibraryPath</methodname> 示例 + +getLibraryPath(), PHP_EOL; + +/* 全局库目录 */ +echo $loader->getLibraryPath(true), PHP_EOL; +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Loader::setLibraryPath + + - + Yaf_Loader::getLocalNamespace - The getLocalNamespace purpose + 获取已注册的命名空间 &reftitle.description; - public voidYaf_Loader::getLocalNamespace + public arrayYaf_Loader::getLocalNamespace - - - - - &warn.undocumented.func; - + 获取所有已注册的本地命名空间及其路径。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +返回已注册的本地命名空间数组,以命名空间前缀为键;若没有注册任何命名空间,则返回空数组。 + + &reftitle.examples; + + <methodname>Yaf_Loader::getLocalNamespace</methodname> 示例 + +registerLocalNamespace("Models"); +$loader->registerLocalNamespace("Vendor", APPLICATION_PATH . "/library/Vendor"); + +print_r($loader->getLocalNamespace()); +?> +]]> + + &example.outputs.similar; + + /var/www/shop/application/library + [Vendor] => /var/www/shop/application/library/Vendor +) +]]> + + + + + + &reftitle.seealso; + + Yaf_Loader::registerLocalNamespace + Yaf_Loader::clearLocalNamespace + + + + + +Yaf_Loader::getNamespacePath +获取类的库文件路径 + + + + &reftitle.description; + + public stringYaf_Loader::getNamespacePath + stringclass_name + + 获取某个类将被查找的库目录。 + + + + &reftitle.parameters; + + + class_name + +要查询其库目录的类名。 + + + + + + &reftitle.returnvalues; +如果该类属于已注册的本地命名空间,则返回本地库目录,否则返回全局库目录(当全局库目录未设置时回退到本地库目录)。 + + + + &reftitle.examples; + + <methodname>Yaf_Loader::getNamespacePath</methodname> 示例 + +registerLocalNamespace("Models"); +$loader->setLibraryPath("/usr/local/share/yaf/library", true); + +/* "Models" 是一个已注册的本地命名空间 */ +echo $loader->getNamespacePath("Models_Product"), PHP_EOL; + +/* 其他类回退到全局库目录 */ +echo $loader->getNamespacePath("Vendor_Payment"), PHP_EOL; +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Loader::isLocalName + Yaf_Loader::getLibraryPath + + + + + \ No newline at end of file diff --git a/reference/yaf/yaf_loader/getnamespaces.xml b/reference/yaf/yaf_loader/getnamespaces.xml new file mode 100644 index 000000000..f13077e5b --- /dev/null +++ b/reference/yaf/yaf_loader/getnamespaces.xml @@ -0,0 +1,81 @@ + + + + + +Yaf_Loader::getNamespaces +getLocalNamespace 的别名 + + + + &reftitle.description; + + public arrayYaf_Loader::getNamespaces + + + Yaf_Loader::getLocalNamespace 的别名。 + + + + &reftitle.parameters; + &no.function.parameters; + + + &reftitle.returnvalues; + 已注册的本地命名空间数组,以命名空间前缀为键,如果没有注册任何命名空间则返回空数组。 + + + + + &reftitle.examples; + + <methodname>Yaf_Loader::getNamespaces</methodname> 示例 + +registerLocalNamespace(array("Models", "Services")); + +/* getNamespaces() 是 getLocalNamespace() 的别名 */ +var_dump($loader->getNamespaces() === $loader->getLocalNamespace()); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Loader::getLocalNamespace + + + + + diff --git a/reference/yaf/yaf_loader/import.xml b/reference/yaf/yaf_loader/import.xml index 00c75ce90..aae78481c 100644 --- a/reference/yaf/yaf_loader/import.xml +++ b/reference/yaf/yaf_loader/import.xml @@ -1,39 +1,88 @@ - + - Yaf_Loader::import - The import purpose +Yaf_Loader::import +加载 PHP 脚本 &reftitle.description; - public static voidYaf_Loader::import - + public static boolYaf_Loader::import + stringfile - - - - - &warn.undocumented.func; - + 加载一次 PHP 脚本文件。如果文件不是绝对路径,则在本地库目录下查找。 + 一个文件只会被包含一次;再次用相同的文件调用 Yaf_Loader::import 会返回 &true; 而不会重复包含。 &reftitle.parameters; - &no.function.parameters; + + + file + +要加载的文件。 + + + - &reftitle.returnvalues; - - - +成功时返回 &true;(包括文件已经加载过的情况),失败时返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Loader::import</methodname> 示例 + + +]]> + + + + 文件只会被导入一次 + + +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Loader::autoload + + - + - Yaf_Loader::isLocalName - The isLocalName purpose +Yaf_Loader::isLocalName +判断类名是否是本地类名 &reftitle.description; - public voidYaf_Loader::isLocalName - + public boolYaf_Loader::isLocalName + stringclass_name - - - - - &warn.undocumented.func; - + 判断类名是否应该在本地库目录中查找,即它的前缀是否属于已注册的本地命名空间。 &reftitle.parameters; - &no.function.parameters; + + + class_name + +要检查的类名。 + + + - &reftitle.returnvalues; - - - +如果类名属于已注册的本地命名空间则返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Loader::isLocalName</methodname> 示例 + +registerLocalNamespace(array("Models", "Services")); + +var_dump($loader->isLocalName("Models_Product")); +var_dump($loader->isLocalName("Vendor_Session")); +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Loader::registerLocalNamespace + Yaf_Loader::getNamespacePath + + - + - Yaf_Loader::registerLocalNamespace - 注册本地类前缀 +Yaf_Loader::registerLocalNamespace +注册本地命名空间 &reftitle.description; - public voidYaf_Loader::registerLocalNamespace - mixedprefix + public Yaf_LoaderfalsenullYaf_Loader::registerLocalNamespace + string|arraynamespace + stringpathnull - - 注册本地类前缀,Yaf_Loader 在两个库目录下搜索类,一个是通过 application.library.directory(在 - application.ini 中)配置,称为本地库目录;另一个是通过 yaf.library(在 php.ini - 中),成为全局库目录,因为它可以在同一个服务器中的许多应用程序共享。 - - - 当触发自动加载时,Yaf_Loader 将通过检查丢失类名的前缀来确定应该在哪个库目录中去搜索。 - - 如果前缀名注册为 localnamespack,则在本地库目录中查找,否则在全局库目录中查找。 - - - 如果未配置 yaf.library,则假定全局库目录为本地库目录。在这种情况下,所有自动加载都将查找本地库目录。 - - 但如果希望 Yaf 应用程序更加健壮,那么请始终将类注册为本地类。 - - - + 注册本地命名空间。前缀属于本地命名空间的类,将在给定的路径下查找(未指定路径时为本地库目录),而不是全局库目录。 + 这样,你就可以把自己的类放在本地库目录中,而共享类则存放在全局库目录中(参见 yaf.library ini 配置项)。 &reftitle.parameters; - prefix + namespace + +命名空间前缀字符串,或者前缀/路径对的数组(值为路径字符串时),或前缀字符串的数组。 + + + + path - - 字符串或者是数组格式的类名前缀,所有拥有和这些前缀相同前缀的类将被加载到本地 library 路径。 - +查找该命名空间的目录。未指定时使用本地库目录。 - &reftitle.returnvalues; - - bool - +成功时返回加载器实例自身;如果提供了无效的参数,则返回 &false;。 &reftitle.examples; - <function>Yaf_Loader::registerLocalNamespace</function> 示例 + <methodname>Yaf_Loader::registerLocalNamespace</methodname> 示例 registerLocalNamespace("Baidu"); -$loader->registerLocalNamespace(array("Sina", "Weibo")); +class Bootstrap extends Yaf_Bootstrap_Abstract +{ + public function _initLoader() + { + $loader = Yaf_Loader::getInstance(); -$loader->autoload("Baidu_Name"); // search in '/local/library/' -$loader->autoload("Sina"); // search '/local/library/' -$loader->autoload("Global_Name");// search in '/global/library/' -$loader->autoload("Foo_Bar"); // search in '/global/library/' + /* Models_User 现在将在 + * APPLICATION_PATH/library/Models/User.php 中查找 */ + $loader->registerLocalNamespace("Models"); + /* 一次注册多个前缀,每个都有自己的查找目录 */ + $loader->registerLocalNamespace(array( + "Services" => APPLICATION_PATH . "/services", + "Vendor" => APPLICATION_PATH . "/vendor", + )); + } +} ?> ]]> + + &reftitle.seealso; + + Yaf_Loader::getLocalNamespace + Yaf_Loader::clearLocalNamespace + Yaf_Loader::isLocalName + + + + + +Yaf_Loader::registerNamespace +registerLocalNamespace 的别名 + + + + &reftitle.description; + + public Yaf_LoaderfalsenullYaf_Loader::registerNamespace + string|arrayname_prefix + stringpathnull + + Yaf_Loader::registerLocalNamespace 的别名。 + + + + &reftitle.parameters; + + + name_prefix + +命名空间前缀字符串,或者前缀/路径对(当值为路径字符串时)或前缀字符串组成的数组。 + + + + path + +查找该命名空间的目录。如果未提供,则使用本地库目录。 + + + + + + &reftitle.returnvalues; +成功时返回加载器实例自身,如果提供了无效参数则返回 &false;。 + + + + + &reftitle.examples; + + <methodname>Yaf_Loader::registerNamespace</methodname> 示例 + +registerNamespace( + "Vendor", + APPLICATION_PATH . "/library/Vendor" + ); + } +} + +/* new Vendor_Payment_Gateway() 现在会在 + * APPLICATION_PATH/library/Vendor/Payment/Gateway.php 中查找 */ +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Loader::registerLocalNamespace + + + + + \ No newline at end of file diff --git a/reference/yaf/yaf_loader/setlibrarypath.xml b/reference/yaf/yaf_loader/setlibrarypath.xml index 4a4af314a..ca25dfddd 100644 --- a/reference/yaf/yaf_loader/setlibrarypath.xml +++ b/reference/yaf/yaf_loader/setlibrarypath.xml @@ -1,40 +1,81 @@ - + Yaf_Loader::setLibraryPath - 改变 library 路径 + 更改库路径 &reftitle.description; public Yaf_LoaderYaf_Loader::setLibraryPath - stringdirectory - boolis_global&false; + stringlibrary_path + boolis_globalfalse - - - - - &warn.undocumented.func; - + 更改库目录。 &reftitle.parameters; - &no.function.parameters; + + + library_path + +新的库目录。 + + + + is_global + +是否更改全局库目录而不是本地库目录。 + + + - &reftitle.returnvalues; - - - +返回加载器实例自身。 + + &reftitle.examples; + + <methodname>Yaf_Loader::setLibraryPath</methodname> 示例 + +setLibraryPath("/var/www/shop/application/library"); + +/* 更改全局库目录 */ +$loader->setLibraryPath("/usr/local/share/yaf/library", true); + +echo $loader->getLibraryPath(), PHP_EOL; +echo $loader->getLibraryPath(true), PHP_EOL; +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Loader::getLibraryPath + + - + - Yaf_Plugin_Abstract::dispatchLoopShutdown - The dispatchLoopShutdown purpose +Yaf_Plugin_Abstract::dispatchLoopShutdown +分发循环之后的钩子 @@ -14,12 +14,7 @@ Yaf_Request_Abstractrequest Yaf_Response_Abstractresponse - - 这个方式是 Yaf 插件钩子系统中最后的一个钩子,如果一个用户插件实现了这个方法,它将在分发循环结束之后触发。 - - - &warn.undocumented.func; - + 这个钩子会在分发循环结束、所有动作执行完毕之后触发一次,且在响应发送给客户端之前。通常用于记录日志或清理工作。 @@ -28,27 +23,57 @@ request - - - +正在被分发的 Yaf_Request_Abstract 实例。 response - - - +Yaf_Response_Abstract 实例。 - &reftitle.returnvalues; - +没有返回值。 + + + + &reftitle.examples; + + <methodname>Yaf_Plugin_Abstract::dispatchLoopShutdown</methodname> 示例 + +getRequestUri(), + $request->getControllerName(), + $request->getActionName() + )); + } +} - +/* 插件在引导(bootstrap)中注册 */ +class Bootstrap extends Yaf_Bootstrap_Abstract +{ + public function _initPlugin(Yaf_Dispatcher $dispatcher) + { + $dispatcher->registerPlugin(new AccessLogPlugin()); + } +} +?> +]]> + + @@ -59,9 +84,9 @@ Yaf_Plugin_Abstract::dispatchLoopStartup Yaf_Plugin_Abstract::preDispatch Yaf_Plugin_Abstract::postDispatch + Yaf_Plugin_Abstract::preResponse - - + - Yaf_Plugin_Abstract::dispatchLoopStartup - 在调度循环之前的 Hook +Yaf_Plugin_Abstract::dispatchLoopStartup +分发循环之前的钩子 @@ -14,9 +14,7 @@ Yaf_Request_Abstractrequest Yaf_Response_Abstractresponse - - 这个钩子将在分发循环开始之前触发。 - + 这个钩子会在分发循环开始、视图引擎初始化之前触发一次。 @@ -25,30 +23,64 @@ request - - - +正在被分发的 Yaf_Request_Abstract 实例。 response - - - +Yaf_Response_Abstract 实例。 - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Plugin_Abstract::dispatchLoopStartup</methodname> 示例 + +registerPlugin(new BenchmarkPlugin()); + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Plugin_Abstract::routerStartup + Yaf_Plugin_Abstract::routerShutdown + Yaf_Plugin_Abstract::preDispatch + Yaf_Plugin_Abstract::postDispatch + Yaf_Plugin_Abstract::dispatchLoopShutdown + Yaf_Plugin_Abstract::preResponse + + - + - Yaf_Plugin_Abstract::postDispatch - The postDispatch purpose +Yaf_Plugin_Abstract::postDispatch +每次分发之后的钩子 @@ -14,12 +14,7 @@ Yaf_Request_Abstractrequest Yaf_Response_Abstractresponse - - - - - &warn.undocumented.func; - + 这个钩子会在每次分发迭代结束(即动作执行完毕)后触发。与 Yaf_Plugin_Abstract::preDispatch 类似,它在一次请求中可能会被调用多次。 @@ -28,30 +23,68 @@ request - - - +正在被分发的 Yaf_Request_Abstract 实例。 response - - - +Yaf_Response_Abstract 实例。 - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Plugin_Abstract::postDispatch</methodname> 示例 + +appendBody(sprintf( + "\n", + $elapsed + )); + } +} + +/* 插件在引导(bootstrap)中注册 */ +class Bootstrap extends Yaf_Bootstrap_Abstract +{ + public function _initPlugin(Yaf_Dispatcher $dispatcher) + { + $dispatcher->registerPlugin(new BenchmarkPlugin()); + } +} +?> +]]> + + + + + &reftitle.seealso; + + Yaf_Plugin_Abstract::routerStartup + Yaf_Plugin_Abstract::routerShutdown + Yaf_Plugin_Abstract::dispatchLoopStartup + Yaf_Plugin_Abstract::preDispatch + Yaf_Plugin_Abstract::dispatchLoopShutdown + Yaf_Plugin_Abstract::preResponse + + - + - Yaf_Plugin_Abstract::preDispatch - The preDispatch purpose +Yaf_Plugin_Abstract::preDispatch +每次分发之前的钩子 @@ -14,11 +14,7 @@ Yaf_Request_Abstractrequest Yaf_Response_Abstractresponse - - - - &warn.undocumented.func; - + 这个钩子会在分发循环中每次分发迭代之前触发。一次分发循环可能会运行多次迭代,因此这个钩子在一次请求中可能会被调用多次。 @@ -27,30 +23,66 @@ request - - - +正在被分发的 Yaf_Request_Abstract 实例。 response - - - +Yaf_Response_Abstract 实例。 - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Plugin_Abstract::preDispatch</methodname> 示例 + +getView(); + if ($request->getModuleName() == "Admin") { + $view->setScriptPath(APPLICATION_PATH . "/modules/admin/views"); + } + } +} +/* 插件在引导(bootstrap)中注册 */ +class Bootstrap extends Yaf_Bootstrap_Abstract +{ + public function _initPlugin(Yaf_Dispatcher $dispatcher) + { + $dispatcher->registerPlugin(new LayoutPlugin()); + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Plugin_Abstract::routerStartup + Yaf_Plugin_Abstract::routerShutdown + Yaf_Plugin_Abstract::dispatchLoopStartup + Yaf_Plugin_Abstract::postDispatch + Yaf_Plugin_Abstract::dispatchLoopShutdown + Yaf_Plugin_Abstract::preResponse + + - + - Yaf_Plugin_Abstract::preResponse - The preResponse purpose +Yaf_Plugin_Abstract::preResponse +响应发出前的钩子 @@ -14,12 +14,10 @@ Yaf_Request_Abstractrequest Yaf_Response_Abstractresponse - - 这个钩子在响应(Yaf_Response)前被触发 - - - &warn.undocumented.func; - + 该钩子用于在响应发送给客户端之前触发。 + + 在当前版本中,该钩子永远不会被调用:它注册在 Yaf_Plugin_Abstract 上,但并未接入调度流程。重写它没有任何效果。 + @@ -28,30 +26,66 @@ request - - - +正在被调度的 Yaf_Request_Abstract 实例。 response - - - +Yaf_Response_Abstract 实例。 - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Plugin_Abstract::preResponse</methodname> 示例 + +setBody( + preg_replace("/>\s+<", $response->getBody()) + ); + } +} +/* 插件在引导类中注册 */ +class Bootstrap extends Yaf_Bootstrap_Abstract +{ + public function _initPlugin(Yaf_Dispatcher $dispatcher) + { + $dispatcher->registerPlugin(new MinifyPlugin()); + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Plugin_Abstract::routerStartup + Yaf_Plugin_Abstract::routerShutdown + Yaf_Plugin_Abstract::dispatchLoopStartup + Yaf_Plugin_Abstract::preDispatch + Yaf_Plugin_Abstract::postDispatch + Yaf_Plugin_Abstract::dispatchLoopShutdown + + - - + - Yaf_Plugin_Abstract::routerShutdown - The routerShutdown purpose +Yaf_Plugin_Abstract::routerShutdown +路由完成后的钩子 @@ -15,10 +14,7 @@ Yaf_Request_Abstractrequest Yaf_Response_Abstractresponse - - 这个钩子在路由结束之后触发,通常被用于登陆检查。 - - + 该钩子在路由过程完成、控制器和动作名称已经解析之后触发,但在调度循环开始之前。由于目标控制器和动作已知,它通常用于访问控制检查,例如登录检查。 @@ -27,57 +23,57 @@ request - - - +正在被调度的 Yaf_Request_Abstract 实例。 response - - - +Yaf_Response_Abstract 实例。 - &reftitle.returnvalues; - - - +没有返回值。 &reftitle.examples; - <function>Yaf_Plugin_Abstract::routerShutdown</function> 示例 + <methodname>Yaf_Plugin_Abstract::routerShutdown</methodname> 示例 array("index"), "User" => array("login")); - public function routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) { $controller = $request->getControllerName(); + $action = $request->getActionName(); - /** - * Use access controller is unecessary for APIs - */ - if (in_array(strtolower($controller), array( - 'api', - ))) { - return TRUE; + if (isset($public[$controller]) && in_array($action, $public[$controller])) { + return; } - - if (Yaf_Session::getInstance()->has("login")) { - return TRUE; + + if (!Yaf_Session::getInstance()->has("login")) { + $response->setRedirect("/user/login"); + $request->setDispatched(true); // 不再调度该请求 } - - /* Use access check failed, need to login */ - $response->setRedirect("http://yourdomain.com/login/"); - return FALSE; + } +} + +/* 插件在引导类中注册 */ +class Bootstrap extends Yaf_Bootstrap_Abstract +{ + public function _initPlugin(Yaf_Dispatcher $dispatcher) + { + $dispatcher->registerPlugin(new AuthPlugin()); } } ?> @@ -94,9 +90,9 @@ class UserInitPlugin extends Yaf_Plugin_Abstract { Yaf_Plugin_Abstract::preDispatch Yaf_Plugin_Abstract::postDispatch Yaf_Plugin_Abstract::dispatchLoopShutdown + Yaf_Plugin_Abstract::preResponse - - + - Yaf_Plugin_Abstract::routerStartup - RouterStartup hook +Yaf_Plugin_Abstract::routerStartup +路由开始前的钩子 @@ -14,12 +14,7 @@ Yaf_Request_Abstractrequest Yaf_Response_Abstractresponse - - 这个是 Yaf 插件的勾子系统最早被触发的的一个方法,如果一个用户插件实现了这个方法,它将在路由之前触发。 - - - &warn.undocumented.func; - + 该钩子在请求被路由之前触发。它是调度流程中最早的钩子,因此通常用于 URL 重写,或者用于必须在 Yaf_Router::route 运行之前完成的路由决策。 @@ -28,27 +23,54 @@ request - - - +正在被调度的 Yaf_Request_Abstract 实例。 response - - - +Yaf_Response_Abstract 实例。 - &reftitle.returnvalues; - +没有返回值。 + - + + &reftitle.examples; + + <methodname>Yaf_Plugin_Abstract::routerStartup</methodname> 示例 + +getRequestUri(); + if (preg_match("#^/[a-z]+$#", $uri)) { + $request->setRequestUri("/page" . $uri); + } + } +} + +/* 插件在引导类中注册 */ +class Bootstrap extends Yaf_Bootstrap_Abstract +{ + public function _initPlugin(Yaf_Dispatcher $dispatcher) + { + $dispatcher->registerPlugin(new RewritePlugin()); + } +} +?> +]]> + + @@ -59,10 +81,9 @@ Yaf_Plugin_Abstract::preDispatch Yaf_Plugin_Abstract::postDispatch Yaf_Plugin_Abstract::dispatchLoopShutdown + Yaf_Plugin_Abstract::preResponse - - - + - Yaf_Registry::__construct - Yaf_Registry 实现单例 +Yaf_Registry::__construct +Yaf_Registry 的构造函数 &reftitle.description; - private Yaf_Registry::__construct + privateYaf_Registry::__construct - - - + 构造函数是私有的:Yaf_Registry 实现了单例模式,不能被直接实例化。请使用静态方法来读写注册表条目。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +没有返回值。 + + + &reftitle.examples; + + <methodname>Yaf_Registry::__construct</methodname> 示例 + + 构造函数是私有的,因此直接实例化会被拒绝: + + + +]]> + + &example.outputs.similar; + + + + + + 通过静态方法使用 <classname>Yaf_Registry</classname> + +getConfig()->application->version); +var_dump(Yaf_Registry::get("version")); +?> +]]> + + &example.outputs.similar; + + + + + + &reftitle.seealso; + + Yaf_Registry::set + Yaf_Registry::get + Yaf_Registry::has + + - - + - Yaf_Registry::del - 从注册表中移除条目 +Yaf_Registry::del +从注册表中移除条目 &reftitle.description; - public static voidYaf_Registry::del + public static boolYaf_Registry::del stringname - - 从注册表中移除条目 - + 从注册表中移除一个条目。移除不存在的名称会被静默接受。 @@ -24,22 +22,54 @@ name - - - +注册表条目的名称。 - &reftitle.returnvalues; - - - +始终返回 &true;。 + + &reftitle.examples; + + <methodname>Yaf_Registry::del</methodname> 示例 + + +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Registry::get + Yaf_Registry::set + Yaf_Registry::has + + - + - Yaf_Registry::get - 从注册表中检索条目 +Yaf_Registry::get +从注册表中检索条目 @@ -13,9 +13,7 @@ public static mixedYaf_Registry::get stringname - - 从注册表中检索条目 - + 从注册表中检索一个值。 @@ -24,22 +22,51 @@ name - - - +注册表条目的名称。 - &reftitle.returnvalues; - - - +name 存储的值;如果不存在该名称的条目,则返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_Registry::get</methodname> 示例 + +getView()->assign("visits", $redis->get("site:visits")); + return true; + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Registry::set + Yaf_Registry::has + Yaf_Registry::del + + - + - Yaf_Registry::has - 检测条目是否存在 +Yaf_Registry::has +检测条目是否存在 @@ -13,9 +13,7 @@ public static boolYaf_Registry::has stringname - - 检测条目是否存在 - + 检测注册表中是否存在某个值。 @@ -24,22 +22,54 @@ name - - - +注册表条目的名称。 - &reftitle.returnvalues; - - - +如果存在给定名称的条目,则返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Registry::has</methodname> 示例 + +getConfig()->redis; + + $redis = new Redis(); + $redis->connect($config->host, $config->port); + Yaf_Registry::set("redis", $redis); + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Registry::get + Yaf_Registry::set + Yaf_Registry::del + + - + - Yaf_Registry::set - 向注册表添加条目 +Yaf_Registry::set +向注册表添加条目 @@ -12,11 +12,9 @@ public static boolYaf_Registry::set stringname - stringvalue + mixedvalue - - 向注册表添加条目 - + 向注册表中存储一个值。设置一个已经存在的名称会覆盖它之前的值。 @@ -25,30 +23,56 @@ name - - - +注册表条目的名称。 value - - - +要存储的值;可以是任意类型,包括对象。 - &reftitle.returnvalues; - - - +成功时返回 &true;,失败时返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Registry::set</methodname> 示例 + +getConfig()->redis; + + $redis = new Redis(); + $redis->connect($config->host, $config->port); + /* 现在,该连接对整个应用可用 */ + Yaf_Registry::set("redis", $redis); + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Registry::get + Yaf_Registry::has + Yaf_Registry::del + + + + + +Yaf_Request_Abstract::clearParams +移除所有参数 + + + + &reftitle.description; + + public Yaf_Request_AbstractnullYaf_Request_Abstract::clearParams + + + 移除由路由器或 Yaf_Request_Abstract::setParam 设置的所有参数。 + + + + &reftitle.parameters; + &no.function.parameters; + + + &reftitle.returnvalues; +返回请求对象自身。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::clearParams</methodname> 示例 + +getRequest(); + + $request->setParam("referrer", "newsletter"); + var_dump($request->getParam("referrer")); + + $request->clearParams(); + var_dump($request->getParam("referrer")); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::setParam + Yaf_Request_Abstract::getParam + Yaf_Request_Abstract::getParams + + + + + diff --git a/reference/yaf/yaf_request_abstract/get.xml b/reference/yaf/yaf_request_abstract/get.xml new file mode 100644 index 000000000..b915c9eeb --- /dev/null +++ b/reference/yaf/yaf_request_abstract/get.xml @@ -0,0 +1,108 @@ + + + + + +Yaf_Request_Abstract::get +从请求中获取变量 + + + + &reftitle.description; + + public mixedYaf_Request_Abstract::get + stringname + mixeddefault + + 从请求中获取变量。搜索顺序为:由 Yaf_Request_Abstract::setParam 设置的请求参数,然后是 POST、GET、COOKIE、SERVER。 + + + + &reftitle.parameters; + + + name + +变量名。 + + + + default + +如果未找到变量则要返回的值。 + + + + + + &reftitle.returnvalues; +如果找到则返回该值,否则如果提供了 default 则返回该值,未提供则返回 &null;。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::get</methodname> 示例 + +getRequest(); + + // 假设请求为 /search?keyword=yaf&page=2 + $keyword = $request->get("keyword"); + $page = (int) $request->get("page", 1); + $sort = $request->get("sort", "relevance"); + + var_dump($keyword, $page, $sort); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::getQuery + Yaf_Request_Abstract::getRequest + Yaf_Request_Abstract::getPost + Yaf_Request_Abstract::getCookie + Yaf_Request_Abstract::getFiles + Yaf_Request_Abstract::getParam + + + + + \ No newline at end of file diff --git a/reference/yaf/yaf_request_abstract/getactionname.xml b/reference/yaf/yaf_request_abstract/getactionname.xml index df2748d11..ecba05e9a 100644 --- a/reference/yaf/yaf_request_abstract/getactionname.xml +++ b/reference/yaf/yaf_request_abstract/getactionname.xml @@ -1,39 +1,67 @@ - + - Yaf_Request_Abstract::getActionName - The getActionName purpose +Yaf_Request_Abstract::getActionName +获取动作名称 &reftitle.description; - public voidYaf_Request_Abstract::getActionName + public stringnullYaf_Request_Abstract::getActionName - - - - - &warn.undocumented.func; - + 获取动作名称 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +动作名称;如果未设置,则返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getActionName</methodname> 示例 + +getRequest()->getActionName()); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::getModuleName + Yaf_Request_Abstract::getControllerName + Yaf_Request_Abstract::getActionName + Yaf_Request_Abstract::setModuleName + Yaf_Request_Abstract::setControllerName + Yaf_Request_Abstract::setActionName + + - + - Yaf_Request_Abstract::getBaseUri - The getBaseUri purpose +Yaf_Request_Abstract::getBaseUri +获取基础 URI &reftitle.description; - public voidYaf_Request_Abstract::getBaseUri + public stringnullYaf_Request_Abstract::getBaseUri - - - - - &warn.undocumented.func; - + 获取基础 URI &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +基础 URI;如果未设置,则返回空字符串。 + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getBaseUri</methodname> 示例 + +getRequest(); + + // 假设应用部署在 /myapp 路径下, + // 且请求是 /myapp/product/view + var_dump($request->getBaseUri()); + var_dump($request->getRequestUri()); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::setBaseUri + Yaf_Request_Abstract::getRequestUri + Yaf_Request_Abstract::setRequestUri + + - + - Yaf_Request_Abstract::getControllerName - The getControllerName purpose +Yaf_Request_Abstract::getControllerName +获取控制器名称 &reftitle.description; - public voidYaf_Request_Abstract::getControllerName + public stringnullYaf_Request_Abstract::getControllerName - - - - - &warn.undocumented.func; - + 获取控制器名称 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +控制器名称;如果未设置,则返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getControllerName</methodname> 示例 + +getRequest()->getControllerName()); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::getModuleName + Yaf_Request_Abstract::getControllerName + Yaf_Request_Abstract::getActionName + Yaf_Request_Abstract::setModuleName + Yaf_Request_Abstract::setControllerName + Yaf_Request_Abstract::setActionName + + + + + +Yaf_Request_Abstract::getCookie +获取 COOKIE 变量 + + + + &reftitle.description; + + public mixedYaf_Request_Abstract::getCookie + stringname + mixeddefault + + 从 $_COOKIE 中获取变量。 + + + + &reftitle.parameters; + + + name + +变量名。如果省略,则返回整个数组。 + + + + default + +如果未找到变量则要返回的值。 + + + + + + &reftitle.returnvalues; +返回 cookie 值,如果未设置则返回 default + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getCookie</methodname> 示例 + +getRequest(); + + $theme = $request->getCookie("theme", "light"); + $sessionId = $request->getCookie("sid"); + + var_dump($theme, $sessionId); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::getQuery + Yaf_Request_Abstract::getRequest + Yaf_Request_Abstract::getPost + Yaf_Request_Abstract::getCookie + Yaf_Request_Abstract::getFiles + Yaf_Request_Abstract::getParam + + + + + \ No newline at end of file diff --git a/reference/yaf/yaf_request_abstract/getenv.xml b/reference/yaf/yaf_request_abstract/getenv.xml index fd12de94e..5300fe23d 100644 --- a/reference/yaf/yaf_request_abstract/getenv.xml +++ b/reference/yaf/yaf_request_abstract/getenv.xml @@ -1,22 +1,20 @@ - + - Yaf_Request_Abstract::getEnv - 检索 ENV 变量 +Yaf_Request_Abstract::getEnv +检索 ENV 变量 &reftitle.description; - public voidYaf_Request_Abstract::getEnv + public mixedYaf_Request_Abstract::getEnv stringname - stringdefault + mixeddefault - - 检索 ENV 变量 - + 检索一个 ENV 变量。 @@ -25,37 +23,61 @@ name - - 变量名 - +变量名。 default - - 如果这个参数被提供了,当参数找不到的时候它将被返回 - +当变量未找到时返回的值。 - &reftitle.returnvalues; - - 返回字符串 - +变量的值;如果未找到,则返回 default + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getEnv</methodname> 示例 + +getRequest()->getEnv("APPLICATION_ENV", "production"); + + var_dump($env); + } +} +?>]]> + + &example.outputs.similar; + + + + &reftitle.seealso; - Yaf_Request_Abstract::getServer + Yaf_Request_Abstract::getQuery + Yaf_Request_Abstract::getRequest + Yaf_Request_Abstract::getPost + Yaf_Request_Abstract::getCookie + Yaf_Request_Abstract::getFiles Yaf_Request_Abstract::getParam - - + Yaf_Request_Abstract::getException - The getException purpose + 获取异常 &reftitle.description; - public voidYaf_Request_Abstract::getException + public ExceptionnullYaf_Request_Abstract::getException - - - - - &warn.undocumented.func; - + 获取调度过程中捕获的异常。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - + 调度过程中捕获的 Exception;如果没有,则返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getException</methodname> 示例 + +catchException(true); + +class ErrorController extends Yaf_Controller_Abstract +{ + public function errorAction($exception) + { + var_dump($this->getRequest()->getException() === $exception); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Dispatcher::catchException + + + + + +Yaf_Request_Abstract::getFiles +获取上传文件 + + + + &reftitle.description; + + public mixedYaf_Request_Abstract::getFiles + stringname + mixeddefault + + 从 $_FILES 中获取变量。 + + + + &reftitle.parameters; + + + name + +变量名。如果省略,则返回整个数组。 + + + + default + +如果未找到变量则要返回的值。 + + + + + + &reftitle.returnvalues; +返回上传文件数组,如果未设置则返回 default + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getFiles</methodname> 示例 + +getRequest()->getFiles("avatar"); + + if (is_array($file) && $file["error"] === UPLOAD_ERR_OK) { + move_uploaded_file( + $file["tmp_name"], + "/var/www/uploads/" . basename($file["name"]) + ); + } + } +} +?>]]> + + + + <methodname>Yaf_Request_Abstract::getFiles</methodname> 示例 + +getRequest()->getFiles("avatar")); + } +} +?>]]> + + &example.outputs.similar; + + + string(9) "photo.jpg" + ["type"]=> + string(10) "image/jpeg" + ["tmp_name"]=> + string(14) "/tmp/phpXvBXqZ" + ["error"]=> + int(0) + ["size"]=> + int(12455) +} +]]> + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::getQuery + Yaf_Request_Abstract::getRequest + Yaf_Request_Abstract::getPost + Yaf_Request_Abstract::getCookie + Yaf_Request_Abstract::getFiles + Yaf_Request_Abstract::getParam + + + + + \ No newline at end of file diff --git a/reference/yaf/yaf_request_abstract/getlanguage.xml b/reference/yaf/yaf_request_abstract/getlanguage.xml index 264009c9c..9458cf1f2 100644 --- a/reference/yaf/yaf_request_abstract/getlanguage.xml +++ b/reference/yaf/yaf_request_abstract/getlanguage.xml @@ -1,36 +1,65 @@ - + - Yaf_Request_Abstract::getLanguage - 检索客户端的首选语言 +Yaf_Request_Abstract::getLanguage +检索客户端的首选语言 &reftitle.description; - public voidYaf_Request_Abstract::getLanguage + public stringnullYaf_Request_Abstract::getLanguage - - - + 检索客户端的首选语言 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - 返回字符串 - +首选语言字符串;如果无法确定,则返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getLanguage</methodname> 示例 + +getRequest()->getLanguage(); + var_dump($language); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::getServer + Yaf_Request_Abstract::getEnv + + - + - Yaf_Request_Abstract::getMethod - 检索请求方法 +Yaf_Request_Abstract::getMethod +检索请求方法 &reftitle.description; - public stringYaf_Request_Abstract::getMethod + public stringnullYaf_Request_Abstract::getMethod - - - + 检索请求方法 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - 返回字符串,像“POST”、“GET”等。 - +请求方法,以字符串形式表示,例如 GET、POST、PUT、DELETE。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getMethod</methodname> 示例 + +getRequest(); + + // 假设请求是通过 POST /order/save 发送的 + var_dump($request->getMethod()); + } +} +?>]]> + + &example.outputs.similar; + + + + &reftitle.seealso; - Yaf_Request_Abstract::isHead - Yaf_Request_Abstract::isCli + Yaf_Request_Abstract::isGet Yaf_Request_Abstract::isPost Yaf_Request_Abstract::isPut + Yaf_Request_Abstract::isHead Yaf_Request_Abstract::isOptions - Yaf_Request_Abstract::isXmlHTTPRequest + Yaf_Request_Abstract::isDelete + Yaf_Request_Abstract::isPatch + Yaf_Request_Abstract::isCli + Yaf_Request_Abstract::isXmlHttpRequest - - + - Yaf_Request_Abstract::getModuleName - The getModuleName purpose +Yaf_Request_Abstract::getModuleName +获取模块名称 &reftitle.description; - public voidYaf_Request_Abstract::getModuleName + public stringnullYaf_Request_Abstract::getModuleName - - - - - &warn.undocumented.func; - + 获取模块名称 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +模块名称;如果未设置,则返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getModuleName</methodname> 示例 + +getRequest()->getModuleName()); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::getModuleName + Yaf_Request_Abstract::getControllerName + Yaf_Request_Abstract::getActionName + Yaf_Request_Abstract::setModuleName + Yaf_Request_Abstract::setControllerName + Yaf_Request_Abstract::setActionName + + - + - Yaf_Request_Abstract::getParam - 检索调用的参数 +Yaf_Request_Abstract::getParam +检索调用的参数 @@ -12,11 +12,9 @@ public mixedYaf_Request_Abstract::getParam stringname - stringdefault + mixeddefault - - - + 从请求中检索一个参数(一个命名的路由/动作参数)。 @@ -25,36 +23,63 @@ name - - - +参数名。 default - - - +当参数未设置时返回的值。 - &reftitle.returnvalues; - +参数的值;如果提供了 default,在未找到时返回它,否则返回 &null;。 + - + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getParam</methodname> 示例 + +getRequest(); + + // 假设请求是 /product/view/id/17 + $id = (int) $request->getParam("id"); + $referrer = $request->getParam("referrer", "direct"); + + var_dump($id, $referrer); + } +} +?>]]> + + &example.outputs.similar; + + + + &reftitle.seealso; Yaf_Request_Abstract::setParam + Yaf_Request_Abstract::getParams + Yaf_Request_Abstract::clearParams + Yaf_Request_Abstract::get - - + - Yaf_Request_Abstract::getParams - 获取所有调用的参数 +Yaf_Request_Abstract::getParams +获取所有调用的参数 &reftitle.description; - public arrayYaf_Request_Abstract::getParams + public arraynullYaf_Request_Abstract::getParams - - - + 从请求中获取所有参数。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - +包含所有参数的数组;如果一个参数都没有设置,则返回 &null;。 + - + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getParams</methodname> 示例 + +getRequest()->getParams()); + } +} +?>]]> + + &example.outputs.similar; + + + string(2) "17" + ["sort"]=> + string(5) "price" +} +]]> + + &reftitle.seealso; Yaf_Request_Abstract::setParam + Yaf_Request_Abstract::getParam + Yaf_Request_Abstract::clearParams - + + + +Yaf_Request_Abstract::getPost +获取 POST 参数 + + + + &reftitle.description; + + public mixedYaf_Request_Abstract::getPost + stringname + mixeddefault + + 从 $_POST 中获取变量。 + + + + &reftitle.parameters; + + + name + +变量名。如果省略,则返回整个数组。 + + + + default + +如果未找到变量则要返回的值。 + + + + + + &reftitle.returnvalues; +返回 POST 参数值,如果未设置则返回 default + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getPost</methodname> 示例 + +getRequest()->isPost()) { + $username = $this->getRequest()->getPost("username"); + $remember = $this->getRequest()->getPost("remember", "no"); + + var_dump($username, $remember); + } + } +} +?>]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::getQuery + Yaf_Request_Abstract::getRequest + Yaf_Request_Abstract::getPost + Yaf_Request_Abstract::getCookie + Yaf_Request_Abstract::getFiles + Yaf_Request_Abstract::getParam + + + + + \ No newline at end of file diff --git a/reference/yaf/yaf_request_abstract/getquery.xml b/reference/yaf/yaf_request_abstract/getquery.xml new file mode 100644 index 000000000..b9cb0bf65 --- /dev/null +++ b/reference/yaf/yaf_request_abstract/getquery.xml @@ -0,0 +1,104 @@ + + + + + +Yaf_Request_Abstract::getQuery +获取查询参数 + + + + &reftitle.description; + + public mixedYaf_Request_Abstract::getQuery + stringname + mixeddefault + + 从 $_GET 中获取变量。 + + + + &reftitle.parameters; + + + name + +变量名。如果省略,则返回整个数组。 + + + + default + +如果未找到变量则要返回的值。 + + + + + + &reftitle.returnvalues; +返回查询参数值,如果未设置则返回 default + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getQuery</methodname> 示例 + +getRequest()->getQuery("keyword"); + $page = (int) $this->getRequest()->getQuery("page", 1); + + var_dump($keyword, $page); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::getQuery + Yaf_Request_Abstract::getRequest + Yaf_Request_Abstract::getPost + Yaf_Request_Abstract::getCookie + Yaf_Request_Abstract::getFiles + Yaf_Request_Abstract::getParam + + + + + \ No newline at end of file diff --git a/reference/yaf/yaf_request_abstract/getraw.xml b/reference/yaf/yaf_request_abstract/getraw.xml new file mode 100644 index 000000000..aebe73df8 --- /dev/null +++ b/reference/yaf/yaf_request_abstract/getraw.xml @@ -0,0 +1,94 @@ + + + + + +Yaf_Request_Abstract::getRaw +获取原始请求体 + + + + &reftitle.description; + + public stringnullYaf_Request_Abstract::getRaw + + + 获取原始请求体。 + + + + &reftitle.parameters; + &no.function.parameters; + + + &reftitle.returnvalues; +返回字符串形式的原始请求体,失败时返回 &null;。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getRaw</methodname> 示例 + +getRequest()->getRaw(); + $data = json_decode($raw, true); + + var_dump($data); + } +} +?>]]> + + &example.outputs.similar; + + + string(3) "yaf" + ["version"]=> + int(3) +} +]]> + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::getQuery + Yaf_Request_Abstract::getRequest + Yaf_Request_Abstract::getPost + Yaf_Request_Abstract::getCookie + Yaf_Request_Abstract::getFiles + Yaf_Request_Abstract::getParam + + + + + diff --git a/reference/yaf/yaf_request_abstract/getrequest.xml b/reference/yaf/yaf_request_abstract/getrequest.xml new file mode 100644 index 000000000..e5ce0dd32 --- /dev/null +++ b/reference/yaf/yaf_request_abstract/getrequest.xml @@ -0,0 +1,104 @@ + + + + + +Yaf_Request_Abstract::getRequest +获取 REQUEST 变量 + + + + &reftitle.description; + + public mixedYaf_Request_Abstract::getRequest + stringname + mixeddefault + + 从 $_REQUEST 中获取变量。 + + + + &reftitle.parameters; + + + name + +变量名。如果省略,则返回整个数组。 + + + + default + +如果未找到变量则要返回的值。 + + + + + + &reftitle.returnvalues; +返回 $_REQUEST 变量值,如果未设置则返回 default + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getRequest</methodname> 示例 + +getRequest()->getRequest("keyword"); + $source = $this->getRequest()->getRequest("source", "web"); + + var_dump($keyword, $source); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::getQuery + Yaf_Request_Abstract::getRequest + Yaf_Request_Abstract::getPost + Yaf_Request_Abstract::getCookie + Yaf_Request_Abstract::getFiles + Yaf_Request_Abstract::getParam + + + + + \ No newline at end of file diff --git a/reference/yaf/yaf_request_abstract/getrequesturi.xml b/reference/yaf/yaf_request_abstract/getrequesturi.xml index 2ccadb064..78b5b75e9 100644 --- a/reference/yaf/yaf_request_abstract/getrequesturi.xml +++ b/reference/yaf/yaf_request_abstract/getrequesturi.xml @@ -1,39 +1,64 @@ - + - Yaf_Request_Abstract::getRequestUri - The getRequestUri purpose +Yaf_Request_Abstract::getRequestUri +获取请求 URI &reftitle.description; - public voidYaf_Request_Abstract::getRequestUri + public stringnullYaf_Request_Abstract::getRequestUri - - - - - &warn.undocumented.func; - + 获取请求 URI &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +请求 URI;如果未设置,则返回空字符串。 + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getRequestUri</methodname> 示例 + +getRequest()->getRequestUri()); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::setRequestUri + Yaf_Request_Abstract::getBaseUri + Yaf_Request_Abstract::setBaseUri + + - + - Yaf_Request_Abstract::getServer - 检索 SERVER 变量 +Yaf_Request_Abstract::getServer +检索 SERVER 变量 &reftitle.description; - public voidYaf_Request_Abstract::getServer + public mixedYaf_Request_Abstract::getServer stringname - stringdefault + mixeddefault - - 检索 SERVER 变量 - + 检索一个 SERVER 变量。 @@ -25,37 +23,64 @@ name - - 变量名 - +变量名。 default - - 如果提供这个参数,在没找到变量值时候此参数的值将被返回 - +当变量未找到时返回的值。 - &reftitle.returnvalues; - +变量的值;如果未找到,则返回 default + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::getServer</methodname> 示例 + +getRequest(); - + $host = $request->getServer("HTTP_HOST"); + $protocol = $request->getServer("SERVER_PROTOCOL", "HTTP/1.1"); + + var_dump($host, $protocol); + } +} +?>]]> + + &example.outputs.similar; + + + + &reftitle.seealso; + Yaf_Request_Abstract::getQuery + Yaf_Request_Abstract::getRequest + Yaf_Request_Abstract::getPost + Yaf_Request_Abstract::getCookie + Yaf_Request_Abstract::getFiles Yaf_Request_Abstract::getParam - Yaf_Request_Abstract::getEnv - - + - Yaf_Request_Abstract::isCli - 判断请求是否是 CLI 请求 +Yaf_Request_Abstract::isCli +判断请求是否是 CLI 请求 @@ -13,32 +13,51 @@ public boolYaf_Request_Abstract::isCli - - - + 检查请求是否以 CLI 方式发送。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - bolean - +如果请求是在命令行下发的则返回 &true;,否则返回 &false;。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::isCli</methodname> 示例 + +isCli()); +?>]]> + + &example.outputs.similar; + + + + &reftitle.seealso; - Yaf_Request_Abstract::isHead Yaf_Request_Abstract::isGet Yaf_Request_Abstract::isPost Yaf_Request_Abstract::isPut + Yaf_Request_Abstract::isHead Yaf_Request_Abstract::isOptions - Yaf_Request_Abstract::isXmlHTTPRequest + Yaf_Request_Abstract::isDelete + Yaf_Request_Abstract::isPatch + Yaf_Request_Abstract::isXmlHttpRequest diff --git a/reference/yaf/yaf_request_abstract/isdelete.xml b/reference/yaf/yaf_request_abstract/isdelete.xml new file mode 100644 index 000000000..b9cd2b606 --- /dev/null +++ b/reference/yaf/yaf_request_abstract/isdelete.xml @@ -0,0 +1,88 @@ + + + + + +Yaf_Request_Abstract::isDelete +判断请求是否为 DELETE 请求 + + + + &reftitle.description; + + public boolYaf_Request_Abstract::isDelete + + + 检查请求是否以 DELETE 方法发送。 + + + + &reftitle.parameters; + &no.function.parameters; + + + &reftitle.returnvalues; +如果请求方法是 DELETE 则返回 &true;,否则返回 &false;。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::isDelete</methodname> 示例 + +getRequest()->isDelete()); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::isGet + Yaf_Request_Abstract::isPost + Yaf_Request_Abstract::isPut + Yaf_Request_Abstract::isHead + Yaf_Request_Abstract::isOptions + Yaf_Request_Abstract::isPatch + Yaf_Request_Abstract::isCli + Yaf_Request_Abstract::isXmlHttpRequest + + + + + diff --git a/reference/yaf/yaf_request_abstract/isdispatched.xml b/reference/yaf/yaf_request_abstract/isdispatched.xml index 928fd45ee..b6d74a0d3 100644 --- a/reference/yaf/yaf_request_abstract/isdispatched.xml +++ b/reference/yaf/yaf_request_abstract/isdispatched.xml @@ -1,10 +1,10 @@ - + - Yaf_Request_Abstract::isDispatched - 判断请求是否已发送 +Yaf_Request_Abstract::isDispatched +判断请求是否已分发 @@ -13,30 +13,53 @@ public boolYaf_Request_Abstract::isDispatched - - - + 判断请求是否已被分发。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - boolean - +如果请求已被分发则返回 &true;,否则返回 &false;。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::isDispatched</methodname> 示例 + +getRequest()->setDispatched(); + + var_dump($this->getRequest()->isDispatched()); + } +} +?>]]> + + &example.outputs.similar; + + + + &reftitle.seealso; Yaf_Dispatcher::dispatch + Yaf_Request_Abstract::setDispatched - - + - Yaf_Request_Abstract::isGet - 判断请求是否是 GET 请求 +Yaf_Request_Abstract::isGet +判断请求是否是 GET 请求 @@ -13,35 +13,60 @@ public boolYaf_Request_Abstract::isGet - - - + 检查请求是否以 GET 方式发送。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - boolean - +如果请求方式是 GET 则返回 &true;,否则返回 &false;。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::isGet</methodname> 示例 + +getRequest(); + + // 假设请求是以 GET /index 方式发送的 + var_dump($request->isGet(), $request->isPost()); + } +} +?>]]> + + &example.outputs.similar; + + + + &reftitle.seealso; - Yaf_Request_Abstract::isHead - Yaf_Request_Abstract::isCli Yaf_Request_Abstract::isPost Yaf_Request_Abstract::isPut + Yaf_Request_Abstract::isHead Yaf_Request_Abstract::isOptions - Yaf_Request_Abstract::isXmlHTTPRequest + Yaf_Request_Abstract::isDelete + Yaf_Request_Abstract::isPatch + Yaf_Request_Abstract::isCli + Yaf_Request_Abstract::isXmlHttpRequest - - + - Yaf_Request_Abstract::isHead - 判断请求是否是 HEAD 请求 +Yaf_Request_Abstract::isHead +判断请求是否是 HEAD 请求 @@ -13,35 +13,54 @@ public boolYaf_Request_Abstract::isHead - - - + 检查请求是否以 HEAD 方式发送。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - boolean - +如果请求方式是 HEAD 则返回 &true;,否则返回 &false;。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::isHead</methodname> 示例 + +getRequest()->isHead()) { + // 只需要响应头,跳过响应主体的渲染 + return false; + } + } +} +?>]]> + + &reftitle.seealso; Yaf_Request_Abstract::isGet - Yaf_Request_Abstract::isCli Yaf_Request_Abstract::isPost Yaf_Request_Abstract::isPut Yaf_Request_Abstract::isOptions - Yaf_Request_Abstract::isXmlHTTPRequest + Yaf_Request_Abstract::isDelete + Yaf_Request_Abstract::isPatch + Yaf_Request_Abstract::isCli + Yaf_Request_Abstract::isXmlHttpRequest - - + - Yaf_Request_Abstract::isOptions - 判断请求是否是 OPTIONS 请求 +Yaf_Request_Abstract::isOptions +判断请求是否是 OPTIONS 请求 @@ -13,24 +13,56 @@ public boolYaf_Request_Abstract::isOptions - - - + 检查请求是否以 OPTIONS 方式发送。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - boolean - +如果请求方式是 OPTIONS 则返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::isOptions</methodname> 示例 + +getRequest()->isOptions()) { + $this->getResponse() + ->setHeader("Allow", "GET, POST, OPTIONS") + ->setBody(""); + return false; + } + } +} +?>]]> + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::isGet + Yaf_Request_Abstract::isPost + Yaf_Request_Abstract::isPut + Yaf_Request_Abstract::isHead + Yaf_Request_Abstract::isDelete + Yaf_Request_Abstract::isPatch + Yaf_Request_Abstract::isCli + Yaf_Request_Abstract::isXmlHttpRequest + + + + + +Yaf_Request_Abstract::isPatch +判断请求是否为 PATCH 请求 + + + + &reftitle.description; + + public boolYaf_Request_Abstract::isPatch + + + 检查请求是否以 PATCH 方法发送。 + + + + &reftitle.parameters; + &no.function.parameters; + + + &reftitle.returnvalues; +如果请求方法是 PATCH 则返回 &true;,否则返回 &false;。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::isPatch</methodname> 示例 + +getRequest()->isPatch()); + } +} +?>]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::isGet + Yaf_Request_Abstract::isPost + Yaf_Request_Abstract::isPut + Yaf_Request_Abstract::isHead + Yaf_Request_Abstract::isOptions + Yaf_Request_Abstract::isDelete + Yaf_Request_Abstract::isCli + Yaf_Request_Abstract::isXmlHttpRequest + + + + + diff --git a/reference/yaf/yaf_request_abstract/ispost.xml b/reference/yaf/yaf_request_abstract/ispost.xml index 918684b62..fb4ed5c58 100644 --- a/reference/yaf/yaf_request_abstract/ispost.xml +++ b/reference/yaf/yaf_request_abstract/ispost.xml @@ -1,10 +1,10 @@ - + - Yaf_Request_Abstract::isPost - 判断请求是否是 POST 请求 +Yaf_Request_Abstract::isPost +判断请求是否是 POST 请求 @@ -13,36 +13,57 @@ public boolYaf_Request_Abstract::isPost - - - - + 检查请求是否以 POST 方式发送。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - boolean - +如果请求方式是 POST 则返回 &true;,否则返回 &false;。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::isPost</methodname> 示例 + +getRequest()->isPost()); + } +} +?>]]> + + &example.outputs.similar; + + + + &reftitle.seealso; Yaf_Request_Abstract::isGet - Yaf_Request_Abstract::isCli - Yaf_Request_Abstract::isHead Yaf_Request_Abstract::isPut + Yaf_Request_Abstract::isHead Yaf_Request_Abstract::isOptions - Yaf_Request_Abstract::isXmlHTTPRequest + Yaf_Request_Abstract::isDelete + Yaf_Request_Abstract::isPatch + Yaf_Request_Abstract::isCli + Yaf_Request_Abstract::isXmlHttpRequest - - + - Yaf_Request_Abstract::isPut - 判断请求是否是 PUT 请求 +Yaf_Request_Abstract::isPut +判断请求是否是 PUT 请求 @@ -13,36 +13,61 @@ public boolYaf_Request_Abstract::isPut - - - - + 检查请求是否以 PUT 方式发送。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - boolean - +如果请求方式是 PUT 则返回 &true;,否则返回 &false;。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::isPut</methodname> 示例 + +getRequest()->isPut()) { + $payload = $this->getRequest()->getRaw(); + } + + var_dump($this->getRequest()->isPut()); + } +} +?>]]> + + &example.outputs.similar; + + + + &reftitle.seealso; - Yaf_Request_Abstract::isHead - Yaf_Request_Abstract::isCli - Yaf_Request_Abstract::isPost Yaf_Request_Abstract::isGet + Yaf_Request_Abstract::isPost + Yaf_Request_Abstract::isHead Yaf_Request_Abstract::isOptions - Yaf_Request_Abstract::isXmlHTTPRequest + Yaf_Request_Abstract::isDelete + Yaf_Request_Abstract::isPatch + Yaf_Request_Abstract::isCli + Yaf_Request_Abstract::isXmlHttpRequest - - + - Yaf_Request_Abstract::isRouted - 判断请求是否已路由 +Yaf_Request_Abstract::isRouted +判断请求是否已路由 @@ -13,24 +13,57 @@ public boolYaf_Request_Abstract::isRouted - - - + 判断请求是否已被路由。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - boolean - +如果请求已被路由则返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::isRouted</methodname> 示例 + +isRouted()) { + return false; + } + + if (0 === strpos($request->getRequestUri(), "/api/")) { + $request->setControllerName("Api") + ->setActionName("handle"); + return true; + } + + return false; + } + public function assemble(array $info, array $query = null) {} +} +?>]]> + + + + + + &reftitle.seealso; + + Yaf_Router::route + Yaf_Request_Abstract::setRouted + + - + - Yaf_Request_Abstract::isXmlHttpRequest - 判断请求是否是 AJAX 请求 +Yaf_Request_Abstract::isXmlHttpRequest +判断请求是否是 AJAX 请求 @@ -13,35 +13,68 @@ public boolYaf_Request_Abstract::isXmlHttpRequest - - - + 通过检查 HTTP_X_REQUESTED_WITH 请求头来判断请求是否是 Ajax 请求。 + + + Yaf_Request_Simple 重写了该方法并始终返回 + &false;,因为命令行请求不可能是 Ajax 请求。 + + &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - boolean - +如果请求是 Ajax 请求(X-Requested-With 头等于 XMLHttpRequest)则返回 &true;,否则返回 &false;。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::isXmlHttpRequest</methodname> 示例 + +getRequest()->isXmlHttpRequest()) { + $this->getResponse() + ->setHeader("Content-Type", "application/json") + ->setBody(json_encode(["id" => 17, "name" => "Yaf in Action"])); + return false; + } + } +} +?>]]> + + &example.outputs.similar; + + + + &reftitle.seealso; - Yaf_Request_Abstract::isHead - Yaf_Request_Abstract::isCli + Yaf_Request_Abstract::isGet Yaf_Request_Abstract::isPost Yaf_Request_Abstract::isPut + Yaf_Request_Abstract::isHead Yaf_Request_Abstract::isOptions - Yaf_Request_Abstract::isGet + Yaf_Request_Abstract::isDelete + Yaf_Request_Abstract::isPatch + Yaf_Request_Abstract::isCli - - + Yaf_Request_Abstract::setActionName @@ -10,13 +10,13 @@ &reftitle.description; - public voidYaf_Request_Abstract::setActionName + public Yaf_Request_AbstractnullYaf_Request_Abstract::setActionName stringaction boolformat_nametrue - - set action name to request, this is usually used by custom router to set route result action name. - + + 设置请求对象的 action 名,通常由自定义路由器用于设置路由结果的 action 名。 + @@ -27,7 +27,7 @@ action - &string;,action 名,应该是小写的,比如“index”或“foo_bar” + &string;,action 名,应该是小写风格,比如 "index" 或 "foo_bar" @@ -35,7 +35,8 @@ format_name - 在 Yaf 3.2.0 中引入,Yaf 默认会将名称格式化为小写样式,如果设置为 &false;,Yaf 将设置原始名称来请求。 + 该参数自 Yaf 3.2.0 引入,默认情况下 Yaf 会将名称格式化为小写风格, + 如果设置为 &false;,Yaf 将直接使用原始名称。 @@ -44,12 +45,47 @@ &reftitle.returnvalues; - - - + + 成功时返回请求对象自身,失败时返回 &null;。 + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::setActionName</methodname> 示例 + +getRequestUri(), "/api")) { + $request->setControllerName("Api") + ->setActionName("orders"); + return true; + } + + return false; + } + public function assemble(array $info, array $query = null) {} +} +?>]]> + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::setControllerName + Yaf_Request_Abstract::setModuleName + Yaf_Request_Abstract::getActionName + + - + Yaf_Request_Abstract::setBaseUri @@ -10,18 +10,19 @@ &reftitle.description; - public boolYaf_Request_Abstract::setBaseUri + public Yaf_Request_AbstractfalseYaf_Request_Abstract::setBaseUri stringuir - 设置基础 URI,在路由时使用基础 URI,在路由阶段,请求 URI 用于路由请求,而基础 URI - 用户跳过请求 URI 的前置部分(基础 URI)。 + 设置基础 URI,基础 URI 用于路由,在路由阶段,请求 URI 用于路由请求, + 而基础 URI 用于跳过请求 URI 的前置部分(基础 URI)。 - 也就是说,如果请求 URI 是 a/b/c,然后设置基础 URI 为 “a/b”,则路由阶段只会使用“/c” + 也就是说,如果请求 URI 是 a/b/c,设置基础 URI 为 "a/b", + 那么路由阶段只会使用 "/c"。 - - 一般不需要设置,Yaf 会自动判断。 - + + 一般情况下不需要设置,Yaf 会自动判断。 + @@ -43,12 +44,45 @@ &reftitle.returnvalues; - - bool - + 成功时返回请求对象自身,失败时返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::setBaseUri</methodname> 示例 + +setBaseUri("/myapp"); +$request->setRequestUri("/myapp/product/view"); +var_dump($request->getBaseUri()); +var_dump($request->getRequestUri()); +?>]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::getBaseUri + Yaf_Request_Abstract::setRequestUri + Yaf_Request_Abstract::getRequestUri + + - + Yaf_Request_Abstract::setControllerName @@ -10,12 +10,12 @@ &reftitle.description; - public voidYaf_Request_Abstract::setControllerName + public Yaf_Request_AbstractnullYaf_Request_Abstract::setControllerName stringcontroller boolformat_nametrue - set controller name to request, this is usually used by custom router to set route result controller name. + 设置请求对象的控制器名,通常由自定义路由器用于设置路由结果的控制器名。 @@ -27,7 +27,7 @@ controller - &string;,controller 名,应该是骆驼样式,比如“Index”或“Foo_Bar” + &string;,控制器名,应该是骆驼(camel)风格,比如 "Index" 或 "Foo_Bar" @@ -35,7 +35,8 @@ format_name - 在 Yaf 3.2.0 中引入,Yaf 默认会将名称格式化为骆驼样式,如果设置为 &false;,Yaf 将设置原始名称来请求。 + 该参数自 Yaf 3.2.0 引入,默认情况下 Yaf 会将名称格式化为骆驼风格, + 如果设置为 &false;,Yaf 将直接使用原始名称。 @@ -44,12 +45,48 @@ &reftitle.returnvalues; - - - + + 成功时返回请求对象自身,失败时返回 &null;。 + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::setControllerName</methodname> 示例 + +getRequestUri(), "/api")) { + // 默认情况下名称会被格式化为骆驼风格, + // 因此 "order_item" 会变成 "Order_Item" + $request->setControllerName("order_item") + ->setActionName("list"); + return true; + } + + return false; + } + public function assemble(array $info, array $query = null) {} +} +?>]]> + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::setModuleName + Yaf_Request_Abstract::setActionName + Yaf_Request_Abstract::getControllerName + + - + - Yaf_Request_Abstract::setDispatched - The setDispatched purpose +Yaf_Request_Abstract::setDispatched +将请求标记为已分发 &reftitle.description; - public voidYaf_Request_Abstract::setDispatched - + final public Yaf_Request_AbstractYaf_Request_Abstract::setDispatched + boolflagtrue - - - - - &warn.undocumented.func; - + 将请求标记为已分发。 + 分发器在执行完一个 action 后会调用该方法,用于停止分发循环。也可以手动调用,例如跳过剩余的分发迭代。 &reftitle.parameters; - &no.function.parameters; + + + flag + +要设置的状态,默认为 &true;。 + + + - &reftitle.returnvalues; - - - +返回请求对象自身。 + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::setDispatched</methodname> 示例 + +setDispatched(); + $response->setRedirect("/account/login"); + } + } +} +?>]]> + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::isDispatched + Yaf_Dispatcher::dispatch + + - + Yaf_Request_Abstract::setModuleName @@ -10,12 +10,12 @@ &reftitle.description; - public voidYaf_Request_Abstract::setModuleName + public Yaf_Request_AbstractnullYaf_Request_Abstract::setModuleName stringmodule boolformat_nametrue - set module name to request, this is usually used by custom router to set route result module name. + 设置请求对象的模块名,通常由自定义路由器用于设置路由结果的模块名。 @@ -27,7 +27,7 @@ module - &string;,module 名,应该是骆驼样式,比如“Index”或“Foo_Bar” + &string;,模块名,应该是骆驼(camel)风格,比如 "Index" 或 "Foo_Bar" @@ -35,7 +35,8 @@ format_name - 在 Yaf 3.2.0 中引入,Yaf 默认会将名称格式化为骆驼样式,如果设置为 &false;,Yaf 将设置原始名称来请求。 + 该参数自 Yaf 3.2.0 引入,默认情况下 Yaf 会将名称格式化为骆驼风格, + 如果设置为 &false;,Yaf 将直接使用原始名称。 @@ -44,12 +45,48 @@ &reftitle.returnvalues; - - - + + 成功时返回请求对象自身,失败时返回 &null;。 + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::setModuleName</methodname> 示例 + +getRequestUri(), "/admin")) { + $request->setModuleName("Admin") + ->setControllerName("Dashboard") + ->setActionName("index"); + return true; + } + + return false; + } + public function assemble(array $info, array $query = null) {} +} +?>]]> + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::setControllerName + Yaf_Request_Abstract::setActionName + Yaf_Request_Abstract::getModuleName + + - + - Yaf_Request_Abstract::setParam - 设置调用参数到请求 +Yaf_Request_Abstract::setParam +设置请求参数 &reftitle.description; - public boolYaf_Request_Abstract::setParam - stringname - stringvalue + public Yaf_Request_AbstractboolnullYaf_Request_Abstract::setParam + mixedname + mixedvalue - - 设置参数到请求,可以由 Yaf_Request_Abstract::getParam 检索 - + 设置请求参数,可以通过 Yaf_Request_Abstract::getParam 获取。 + 如果只传入一个数组参数,数组中的每个键值对都会被设置为请求参数。 @@ -25,27 +24,59 @@ name - - - +参数名,或者一个键值对数组。 value - - - +参数值。除非 name 是数组,否则必填。 - &reftitle.returnvalues; - +成功时返回请求对象自身,失败时返回 &false;。 + + + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::setParam</methodname> 示例 + +getRequest(); - + $request->setParam("referrer", "newsletter"); + $request->setParam(["source" => "email", "campaign" => "spring"]); + + var_dump($request->getParam("referrer")); + var_dump($request->getParams()); + } +} +?>]]> + + &example.outputs.similar; + + + string(10) "newsletter" + ["source"]=> + string(5) "email" + ["campaign"]=> + string(6) "spring" +} +]]> + + @@ -53,9 +84,9 @@ Yaf_Request_Abstract::getParam Yaf_Request_Abstract::getParams + Yaf_Request_Abstract::clearParams - - + - Yaf_Request_Abstract::setRequestUri - The setRequestUri purpose +Yaf_Request_Abstract::setRequestUri +设置请求 URI &reftitle.description; - public voidYaf_Request_Abstract::setRequestUri - stringuir + public Yaf_Request_AbstractYaf_Request_Abstract::setRequestUri + stringuri - - - - - &warn.undocumented.func; - + 设置请求 URI,覆盖从环境中检测到的值。 + 这在手动分发时很有用,例如在测试中使用一个与真实请求不同的 URI。 &reftitle.parameters; - uir + uri - - - +要设置的请求 URI。 - &reftitle.returnvalues; - - - +返回请求对象自身。 + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::setRequestUri</methodname> 示例 + +setRequestUri("/product/view/id/17"); + +var_dump($request->getRequestUri()); +?>]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::getRequestUri + Yaf_Request_Abstract::setBaseUri + Yaf_Request_Abstract::getBaseUri + + - + - Yaf_Request_Abstract::setRouted - The setRouted purpose +Yaf_Request_Abstract::setRouted +将请求标记为已路由 &reftitle.description; - public voidYaf_Request_Abstract::setRouted - stringflag + final public Yaf_Request_AbstractYaf_Request_Abstract::setRouted + boolflagtrue - - - - - &warn.undocumented.func; - + 将请求标记为已路由。 + 路由成功后路由器会调用该方法。手动调用可以阻止后续的自定义路由器继续执行。 @@ -27,22 +23,54 @@ flag - - - +要设置的状态,默认为 &true;。 - &reftitle.returnvalues; - - - +返回请求对象自身。 + + &reftitle.examples; + + <methodname>Yaf_Request_Abstract::setRouted</methodname> 示例 + +getRequestUri(), "/api/")) { + return false; + } + + $request->setControllerName("Api") + ->setActionName("handle"); + // 阻止在此之后注册的路由器继续执行 + $request->setRouted(); + + return true; + } + + public function assemble(array $info, array $query = null) {} +} +?>]]> + + + + + + &reftitle.seealso; + + Yaf_Request_Abstract::isRouted + Yaf_Router::route + + - + Yaf_Request_Http::__construct @@ -35,6 +35,48 @@ + + &reftitle.examples; + + <methodname>Yaf_Request_Http::__construct</methodname> 示例 + +getMethod()); +var_dump($request->getRequestUri()); +var_dump($request->getBaseUri()); +?> +]]> + + &example.outputs.similar; + + + + + + + + + &reftitle.seealso; + + Yaf_Request_Simple + Yaf_Request_Abstract::getMethod + Yaf_Request_Abstract::getRequestUri + + + - - - - Yaf_Request_Http::get - 从客户端检索变量 - - - - &reftitle.description; - - public mixedYaf_Request_Http::get - stringname - stringdefault - - - 从客户端检索变量,该方法将从请求参数中搜索 name,如果没有找到,将从 POST、GET、Cookie、Server 中寻找 - - - - - &reftitle.parameters; - - - name - - - 变量名 - - - - - default - - - 如果提供了此参数,当没有找到此变量时,将返回此参数 - - - - - - - - &reftitle.returnvalues; - - - - - - - &reftitle.seealso; - - Yaf_Request_Http::getQuery - Yaf_Request_Http::getPost - Yaf_Request_Http::getCookie - Yaf_Request_Http::getRaw - Yaf_Request_Abstract::getServer - Yaf_Request_Abstract::getParam - - - - - - diff --git a/reference/yaf/yaf_request_http/getcookie.xml b/reference/yaf/yaf_request_http/getcookie.xml deleted file mode 100644 index 52e80386b..000000000 --- a/reference/yaf/yaf_request_http/getcookie.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - Yaf_Request_Http::getCookie - 检索 Cookie 变量 - - - - &reftitle.description; - - public mixedYaf_Request_Http::getCookie - stringname - stringdefault - - - 检索 Cookie 变量 - - - - - &reftitle.parameters; - - - name - - - cookie 变量 - - - - - default - - - 如果提供了此参数,当没有找到此变量时,将返回此参数 - - - - - - - - &reftitle.returnvalues; - - - - - - - &reftitle.seealso; - - Yaf_Request_Http::get - Yaf_Request_Http::getQuery - Yaf_Request_Http::getPost - Yaf_Request_Http::getRaw - Yaf_Request_Abstract::getServer - Yaf_Request_Abstract::getParam - - - - - - diff --git a/reference/yaf/yaf_request_http/getfiles.xml b/reference/yaf/yaf_request_http/getfiles.xml deleted file mode 100644 index 177b90711..000000000 --- a/reference/yaf/yaf_request_http/getfiles.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Yaf_Request_Http::getFiles - The getFiles purpose - - - - &reftitle.description; - - public voidYaf_Request_Http::getFiles - - - - - - - &warn.undocumented.func; - - - - - &reftitle.parameters; - &no.function.parameters; - - - - &reftitle.returnvalues; - - - - - - - - - diff --git a/reference/yaf/yaf_request_http/getpost.xml b/reference/yaf/yaf_request_http/getpost.xml deleted file mode 100644 index 1c52d7158..000000000 --- a/reference/yaf/yaf_request_http/getpost.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - Yaf_Request_Http::getPost - 检索 POST 变量 - - - - &reftitle.description; - - public mixedYaf_Request_Http::getPost - stringname - stringdefault - - - 检索 POST 变量 - - - - - &reftitle.parameters; - - - name - - - 变量名 - - - - - default - - - 如果提供了此参数,当没有找到此变量时,将返回此参数 - - - - - - - - &reftitle.returnvalues; - - - - - - - &reftitle.seealso; - - Yaf_Request_Http::get - Yaf_Request_Http::getQuery - Yaf_Request_Http::getCookie - Yaf_Request_Http::getRaw - Yaf_Request_Abstract::getServer - Yaf_Request_Abstract::getParam - - - - - - diff --git a/reference/yaf/yaf_request_http/getquery.xml b/reference/yaf/yaf_request_http/getquery.xml deleted file mode 100644 index 5c58be89d..000000000 --- a/reference/yaf/yaf_request_http/getquery.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - Yaf_Request_Http::getQuery - 获取 query 参数 - - - - &reftitle.description; - - public mixedYaf_Request_Http::getQuery - stringname - stringdefault - - - 返回 GET 变量 - - - - - &reftitle.parameters; - - - name - - - 变量名 - - - - - default - - - 如果提供了此参数,当没有找到此变量时,将返回此参数 - - - - - - - - &reftitle.returnvalues; - - - - - - - &reftitle.seealso; - - Yaf_Request_Http::get - Yaf_Request_Http::getPost - Yaf_Request_Http::getCookie - Yaf_Request_Http::getRaw - Yaf_Request_Abstract::getServer - Yaf_Request_Abstract::getParam - - - - - - diff --git a/reference/yaf/yaf_request_http/getrequest.xml b/reference/yaf/yaf_request_http/getrequest.xml deleted file mode 100644 index 6d452fb05..000000000 --- a/reference/yaf/yaf_request_http/getrequest.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Yaf_Request_Http::getRequest - The getRequest purpose - - - - &reftitle.description; - - public voidYaf_Request_Http::getRequest - - - - - - - &warn.undocumented.func; - - - - - &reftitle.parameters; - &no.function.parameters; - - - - &reftitle.returnvalues; - - - - - - - - - diff --git a/reference/yaf/yaf_request_http/isxmlhttprequest.xml b/reference/yaf/yaf_request_http/isxmlhttprequest.xml deleted file mode 100644 index 1ca22d705..000000000 --- a/reference/yaf/yaf_request_http/isxmlhttprequest.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Yaf_Request_Http::isXmlHttpRequest - 是否为Ajax请求 - - - - &reftitle.description; - - public boolYaf_Request_Http::isXmlHttpRequest - - - - 检查请求是否是 Ajax 请求。 - - - 此方法依赖于请求标头:HTTP_X_REQUESTED_WITH,某些 Javascript 库在执行 Ajax 请求时不会设置此 header - - - - - - - &reftitle.parameters; - &no.function.parameters; - - - - &reftitle.returnvalues; - - boolean - - - - - - diff --git a/reference/yaf/yaf_request_simple/construct.xml b/reference/yaf/yaf_request_simple/construct.xml index fa3af2fd4..234a8e17c 100644 --- a/reference/yaf/yaf_request_simple/construct.xml +++ b/reference/yaf/yaf_request_simple/construct.xml @@ -1,6 +1,6 @@ - + Yaf_Request_Simple::__construct @@ -37,6 +37,56 @@ + + &reftitle.examples; + + <methodname>Yaf_Request_Simple::__construct</methodname> 示例 + + 10) // 请求参数 +); + +var_dump($request->isRouted()); /* 带有 MVC 名称的请求是预路由的 */ +var_dump($request->getModuleName()); +var_dump($request->getControllerName()); +var_dump($request->getActionName()); +var_dump($request->getParam("id")); +?> +]]> + + &example.outputs.similar; + + + + + + + + + &reftitle.seealso; + + Yaf_Request_Http + Yaf_Request_Abstract::isRouted + Yaf_Request_Abstract::getParam + + + - - - - Yaf_Request_Simple::get - The get purpose - - - - &reftitle.description; - - public voidYaf_Request_Simple::get - - - - - - - &warn.undocumented.func; - - - - - &reftitle.parameters; - &no.function.parameters; - - - - &reftitle.returnvalues; - - - - - - - - - diff --git a/reference/yaf/yaf_request_simple/getcookie.xml b/reference/yaf/yaf_request_simple/getcookie.xml deleted file mode 100644 index 1a9c6d0c4..000000000 --- a/reference/yaf/yaf_request_simple/getcookie.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Yaf_Request_Simple::getCookie - The getCookie purpose - - - - &reftitle.description; - - public voidYaf_Request_Simple::getCookie - - - - - - - &warn.undocumented.func; - - - - - &reftitle.parameters; - &no.function.parameters; - - - - &reftitle.returnvalues; - - - - - - - - - diff --git a/reference/yaf/yaf_request_simple/getfiles.xml b/reference/yaf/yaf_request_simple/getfiles.xml deleted file mode 100644 index 81b6c6f94..000000000 --- a/reference/yaf/yaf_request_simple/getfiles.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Yaf_Request_Simple::getFiles - The getFiles purpose - - - - &reftitle.description; - - public voidYaf_Request_Simple::getFiles - - - - - - - &warn.undocumented.func; - - - - - &reftitle.parameters; - &no.function.parameters; - - - - &reftitle.returnvalues; - - - - - - - - - diff --git a/reference/yaf/yaf_request_simple/getpost.xml b/reference/yaf/yaf_request_simple/getpost.xml deleted file mode 100644 index ca70311a7..000000000 --- a/reference/yaf/yaf_request_simple/getpost.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Yaf_Request_Simple::getPost - The getPost purpose - - - - &reftitle.description; - - public voidYaf_Request_Simple::getPost - - - - - - - &warn.undocumented.func; - - - - - &reftitle.parameters; - &no.function.parameters; - - - - &reftitle.returnvalues; - - - - - - - - - diff --git a/reference/yaf/yaf_request_simple/getquery.xml b/reference/yaf/yaf_request_simple/getquery.xml deleted file mode 100644 index 012fe0703..000000000 --- a/reference/yaf/yaf_request_simple/getquery.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Yaf_Request_Simple::getQuery - The getQuery purpose - - - - &reftitle.description; - - public voidYaf_Request_Simple::getQuery - - - - - - - &warn.undocumented.func; - - - - - &reftitle.parameters; - &no.function.parameters; - - - - &reftitle.returnvalues; - - - - - - - - - diff --git a/reference/yaf/yaf_request_simple/getrequest.xml b/reference/yaf/yaf_request_simple/getrequest.xml deleted file mode 100644 index 04f5398ad..000000000 --- a/reference/yaf/yaf_request_simple/getrequest.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Yaf_Request_Simple::getRequest - The getRequest purpose - - - - &reftitle.description; - - public voidYaf_Request_Simple::getRequest - - - - - - - &warn.undocumented.func; - - - - - &reftitle.parameters; - &no.function.parameters; - - - - &reftitle.returnvalues; - - - - - - - - - diff --git a/reference/yaf/yaf_request_simple/isxmlhttprequest.xml b/reference/yaf/yaf_request_simple/isxmlhttprequest.xml deleted file mode 100644 index 9cb0bed27..000000000 --- a/reference/yaf/yaf_request_simple/isxmlhttprequest.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - Yaf_Request_Simple::isXmlHttpRequest - 判断请求是否是 Ajax 请求 - - - - &reftitle.description; - - public voidYaf_Request_Simple::isXmlHttpRequest - - - - - - - - - - &reftitle.parameters; - &no.function.parameters; - - - - &reftitle.returnvalues; - - Yaf_Request_Simple 始终返回 false - - - - - - &reftitle.seealso; - - Yaf_Request_Abstract::isXmlHTTPRequest - Yaf_Request_Http::isXmlHTTPRequest - - - - - - diff --git a/reference/yaf/yaf_response_abstract/appendbody.xml b/reference/yaf/yaf_response_abstract/appendbody.xml index 3af601637..2c5f9fa8d 100644 --- a/reference/yaf/yaf_response_abstract/appendbody.xml +++ b/reference/yaf/yaf_response_abstract/appendbody.xml @@ -1,23 +1,21 @@ - + - Yaf_Response_Abstract::appendBody - 向响应 body 追加内容 +Yaf_Response_Abstract::appendBody +向响应 body 追加内容 &reftitle.description; - public boolYaf_Response_Abstract::appendBody - stringcontent + public Yaf_Response_AbstractfalsenullYaf_Response_Abstract::appendBody + stringbody stringkey - - 追加内容到已有的内存块 - + 追加内容到响应 body。 @@ -26,34 +24,21 @@ body - - 内容字符串 - +内容字符串。 key - - 响应内容的 key,可以使用 key 设置内容,如果没有指定,然后默认使用 Yaf_Response_Abstract::DEFAULT_BODY - - - 此参数自 2.2.0 起引入 - - - +内容 key,如果未指定,将使用 Yaf_Response_Abstract::DEFAULT_BODY - &reftitle.returnvalues; - - bool - +成功时返回响应对象自身,失败时返回 &false;。 - &reftitle.examples; @@ -66,14 +51,12 @@ $response = new Yaf_Response_Http(); $response->setBody("Hello")->appendBody(" World"); echo $response; -?> -]]> +?>]]> &example.outputs.similar; +Hello World]]> @@ -81,14 +64,12 @@ Hello World &reftitle.seealso; - Yaf_Config_Ini Yaf_Response_Abstract::getBody Yaf_Response_Abstract::setBody Yaf_Response_Abstract::prependBody Yaf_Response_Abstract::clearBody - - + - Yaf_Response_Abstract::clearBody - 丢弃所有已存在的响应 body +Yaf_Response_Abstract::clearBody +丢弃所有已存在的响应 body &reftitle.description; - public boolYaf_Response_Abstract::clearBody + public Yaf_Response_AbstractfalsenullYaf_Response_Abstract::clearBody stringkey - - 清除已存在的内容 - + 丢弃所有已存在的响应 body。 @@ -24,24 +22,53 @@ key - - 内容 key,如果没有指定,将会清除所有内容。 - - - 此参数自 2.2.0 起引入 - - - +内容 key。若指定,则只清除该内容块;否则清除所有内容块。 - &reftitle.returnvalues; - +成功时返回响应对象自身,失败时返回 &null;。 + + + + &reftitle.examples; + + <methodname>Yaf_Response_Abstract::clearBody</methodname> 示例 + +getResponse(); - + $response->setBody("Hello", "intro"); + $response->setBody("World"); + + $response->clearBody("intro"); // 仅丢弃 "intro" 块 + var_dump($response->getBody(null)); + + $response->clearBody(); // 丢弃所有 body 块 + var_dump($response->getBody(null)); + } +} +?> +]]> + + &example.outputs.similar; + + + string(5) "World" +} +array(0) { +}]]> + + @@ -53,7 +80,6 @@ Yaf_Response_Abstract::getBody - - + - Yaf_Response_Abstract::clearHeaders - 丢弃所有设置的 header +Yaf_Response_Abstract::clearHeaders +丢弃所有已设置的响应头 &reftitle.description; - public voidYaf_Response_Abstract::clearHeaders + public Yaf_Response_AbstractfalsenullYaf_Response_Abstract::clearHeaders - - - + 移除所有已设置的 HTTP 响应头。 + 此方法仅在 Yaf_Response_Http 子类中有完整实现,在抽象类中只是一个桩方法。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - +成功时返回响应对象自身,失败时返回 &false;。 + + + + &reftitle.examples; + + <methodname>Yaf_Response_Abstract::clearHeaders</methodname> 示例 + +getResponse(); - + $response->setHeader("Content-Type", "application/json"); + $response->clearHeaders(); + + var_dump($response->getHeader()); // array(0) { } + } +} +?> +]]> + + &reftitle.seealso; - Yaf_Response_Abstract::getHeader Yaf_Response_Abstract::setHeader + Yaf_Response_Abstract::getHeader + Yaf_Response_Abstract::setAllHeaders - - + Yaf_Response_Abstract::__construct - The __construct purpose + 构造一个响应对象 @@ -13,12 +13,19 @@ public Yaf_Response_Abstract::__construct - - - - - &warn.undocumented.func; - + + 构造一个响应对象。构造函数不接受任何参数; + Yaf_Response_HttpYaf_Response_Cli + 等具体子类会初始化各自的默认值(例如,HTTP 响应初始的响应码为 + 200)。 + + + + 通常不需要手动构造响应对象: + Yaf_Dispatcher::getResponse + 会返回由分发器创建的那个响应对象。 + + @@ -28,11 +35,45 @@ &reftitle.returnvalues; - + + 不返回任何值。 + + - + + &reftitle.examples; + + <methodname>Yaf_Response_Abstract::__construct</methodname> 示例 + +getResponse(); + +/* 直接构造主要在测试中比较有用 */ +$response = new Yaf_Response_Http(); +$response->setBody("Hello World"); + +echo $response; +?> +]]> + + &example.outputs.similar; + + + + + + &reftitle.seealso; + + Yaf_Dispatcher::getResponse + Yaf_Response_Abstract::response + + diff --git a/reference/yaf/yaf_response_abstract/destruct.xml b/reference/yaf/yaf_response_abstract/destruct.xml deleted file mode 100644 index 269033e9b..000000000 --- a/reference/yaf/yaf_response_abstract/destruct.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Yaf_Response_Abstract::__destruct - The __destruct purpose - - - - &reftitle.description; - - public Yaf_Response_Abstract::__destruct - - - - - - - &warn.undocumented.func; - - - - - &reftitle.parameters; - &no.function.parameters; - - - - &reftitle.returnvalues; - - - - - - - - - diff --git a/reference/yaf/yaf_response_abstract/getbody.xml b/reference/yaf/yaf_response_abstract/getbody.xml index bbae5d7ef..fe7ae0bad 100644 --- a/reference/yaf/yaf_response_abstract/getbody.xml +++ b/reference/yaf/yaf_response_abstract/getbody.xml @@ -1,10 +1,10 @@ - + - Yaf_Response_Abstract::getBody - 获取已存在的内容 +Yaf_Response_Abstract::getBody +获取一个响应 body 块的内容 @@ -13,9 +13,7 @@ public mixedYaf_Response_Abstract::getBody stringkey - - 获取已存在的内容 - + 获取一个响应 body 块的内容。 @@ -24,27 +22,15 @@ key - - 内容 key,如果未指定,然后默认使用 - Yaf_Response_Abstract::DEFAULT_BODY。如果传入 &null;,所有的内容将会以数组形式被返回。 - - - 此参数自 2.2.0 起引入 - - - +内容 key。若未指定,则使用 DEFAULT_BODY 块;传入 &null; 则以数组形式获取所有内容块。 - &reftitle.returnvalues; - - - +返回内容字符串;当 key 为 &null; 时,返回包含所有内容块的数组。若该块未设置,则返回空字符串。 - &reftitle.examples; @@ -56,12 +42,11 @@ $response = new Yaf_Response_Http(); $response->setBody("Hello")->setBody(" World", "footer"); -var_dump($response->getBody()); //default -var_dump($response->getBody(Yaf_Response_Abstract::DEFAULT_BODY)); //same as above +var_dump($response->getBody()); +var_dump($response->getBody(Yaf_Response_Abstract::DEFAULT_BODY)); var_dump($response->getBody("footer")); -var_dump($response->getBody(NULL)); //get all -?> -]]> +var_dump($response->getBody(NULL)); +?>]]> &example.outputs.similar; @@ -74,8 +59,7 @@ array(2) { string(5) "Hello" ["footer"]=> string(6) " World" -} -]]> +}]]> @@ -89,7 +73,6 @@ array(2) { Yaf_Response_Abstract::clearBody - - + - Yaf_Response_Abstract::getHeader - The getHeader purpose +Yaf_Response_Abstract::getHeader +获取 HTTP 响应头 &reftitle.description; - public voidYaf_Response_Abstract::getHeader - + public stringarraynullYaf_Response_Abstract::getHeader + stringname - - - - - &warn.undocumented.func; - + 获取 HTTP 响应头。 + 此方法仅在 Yaf_Response_Http 子类中有完整实现,在抽象类中只是一个桩方法。 &reftitle.parameters; - &no.function.parameters; + + + name + +响应头名称。若省略,则以数组形式返回所有响应头。 + + + - &reftitle.returnvalues; - +以字符串形式返回响应头的值;省略名称时返回包含所有响应头的数组。若未设置所请求的响应头,则返回 &null;。 + + + + &reftitle.examples; + + <methodname>Yaf_Response_Abstract::getHeader</methodname> 示例 + +getResponse(); + $response->setHeader("Content-Type", "application/json"); - + var_dump($response->getHeader("Content-Type")); + var_dump($response->getHeader()); // 所有响应头 + var_dump($response->getHeader("X-Missing")); + } +} +?> +]]> + + &example.outputs.similar; + + + string(16) "application/json" +} +NULL]]> + + &reftitle.seealso; Yaf_Response_Abstract::setHeader - Yaf_Response_Abstract::cleanHeaders + Yaf_Response_Abstract::clearHeaders + Yaf_Response_Abstract::setAllHeaders - - + - Yaf_Response_Abstract::prependBody - The prependBody purpose +Yaf_Response_Abstract::prependBody +向响应 body 前置插入内容 &reftitle.description; - public boolYaf_Response_Abstract::prependBody - stringcontent + public Yaf_Response_AbstractfalsenullYaf_Response_Abstract::prependBody + stringbody stringkey - - 往已有的内容块前插入内容 - + 向响应 body 前置插入内容 @@ -25,35 +23,21 @@ body - - 内容字符串 - +内容字符串。 key - - 内容 key,可以使用 key 设置内容,如果未指定,然后默认使用 - Yaf_Response_Abstract::DEFAULT_BODY。 - - - 此参数自 2.2.0 起引入 - - - +内容 key。若未指定,则使用 Yaf_Response_Abstract::DEFAULT_BODY - &reftitle.returnvalues; - - bool - +成功时返回响应对象自身,失败时返回 &false;。 - &reftitle.examples; @@ -66,14 +50,12 @@ $response = new Yaf_Response_Http(); $response->setBody("World")->prependBody("Hello "); echo $response; -?> -]]> +?>]]> &example.outputs.similar; +Hello World]]> @@ -87,9 +69,6 @@ Hello World Yaf_Response_Abstract::clearBody - - - - + - Yaf_Response_Abstract::response - 发送响应 +Yaf_Response_Abstract::response +发送响应 &reftitle.description; - public voidYaf_Response_Abstract::response + public boolnullYaf_Response_Abstract::response - - 发送响应 - + 发送响应:按顺序发送响应头和所有 body 块。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +成功时返回 &true;,失败时返回 &null;。 - &reftitle.examples; @@ -42,14 +36,12 @@ $response = new Yaf_Response_Http(); $response->setBody("Hello")->setBody(" World", "footer"); $response->response(); -?> -]]> +?>]]> &example.outputs.similar; +Hello World]]> @@ -61,7 +53,6 @@ Hello World Yaf_Response_Abstract::clearBody - - + - Yaf_Response_Abstract::setAllHeaders - The setAllHeaders purpose +Yaf_Response_Abstract::setAllHeaders +批量设置 HTTP 响应头 &reftitle.description; - protected voidYaf_Response_Abstract::setAllHeaders - + public boolYaf_Response_Abstract::setAllHeaders + arrayheaders - - - - - &warn.undocumented.func; - + 一次性设置所有 HTTP 响应头。 + 此方法仅在 Yaf_Response_Http 子类中有完整实现,在抽象类中只是一个桩方法。 &reftitle.parameters; - &no.function.parameters; + + + headers + +响应头名称/值对的数组。已存在的同名响应头会被替换。 + + + - &reftitle.returnvalues; - - - +返回 &true;。 + + &reftitle.examples; + + <methodname>Yaf_Response_Abstract::setAllHeaders</methodname> 示例 + +getResponse()->setAllHeaders(array( + "Content-Type" => "application/json; charset=utf-8", + "Cache-Control" => "no-cache", + "X-Request-Id" => "7f3c2d91", + )); + } +} +?> +]]> + + + + + &reftitle.seealso; + + Yaf_Response_Abstract::setHeader + Yaf_Response_Abstract::getHeader + Yaf_Response_Abstract::clearHeaders + + - + - Yaf_Response_Abstract::setBody - 设置内容到响应 +Yaf_Response_Abstract::setBody +设置内容到响应 &reftitle.description; - public boolYaf_Response_Abstract::setBody - stringcontent + public Yaf_Response_AbstractfalsenullYaf_Response_Abstract::setBody + stringbody stringkey - - 设置内容到响应 - + 设置内容到响应 @@ -25,35 +23,21 @@ body - - 内容字符串 - +内容字符串。 key - - 内容 key,可以使用 key 设置内容,如果未指定,然后默认使用 - Yaf_Response_Abstract::DEFAULT_BODY。 - - - 此参数自 2.2.0 起引入 - - - +内容 key。若未指定,则使用 Yaf_Response_Abstract::DEFAULT_BODY - &reftitle.returnvalues; - - - +成功时返回响应对象自身,失败时返回 &false;。 - &reftitle.examples; @@ -67,8 +51,7 @@ $response->setBody("Hello")->setBody(" World", "footer"); print_r($response); echo $response; -?> -]]> +?>]]> &example.outputs.similar; @@ -88,8 +71,7 @@ Yaf_Response_Http Object [_sendheader:protected] => 1 [_response_code:protected] => 200 ) -Hello World -]]> +Hello World]]> @@ -103,7 +85,6 @@ Hello World Yaf_Response_Abstract::clearBody - - + - Yaf_Response_Abstract::setHeader - 设置响应 header +Yaf_Response_Abstract::setHeader +设置 HTTP 响应头 @@ -13,33 +13,80 @@ public boolYaf_Response_Abstract::setHeader stringname stringvalue - boolreplace + boolreplacefalse + intresponse_code0 - - 用于发送 HTTP header - + 设置 HTTP 响应头。 + 此方法仅在 Yaf_Response_Http 子类中有完整实现,在抽象类中只是一个桩方法。 &reftitle.parameters; - &no.function.parameters; + + + name + +响应头名称。 + + + + value + +响应头的值。 + + + + replace + +是否替换已存在的同名响应头。若为 &false;,新值会以逗号分隔追加到已有值之后。注意:虽然声明的默认值是 &false;,但当前实现在省略该参数时会替换已有响应头。 + + + + response_code + +若不为零,则设置为响应的 HTTP 响应码。 + + + - &reftitle.returnvalues; - +成功时返回 &true;,失败时返回 &false;。 + + + + &reftitle.examples; + + <methodname>Yaf_Response_Abstract::setHeader</methodname> 示例 + +getResponse(); - + $response->setHeader("Content-Type", "application/json"); + + /* 发送 401 并要求提供凭据 */ + $response->setHeader("WWW-Authenticate", 'Basic realm="Member Area"', true, 401); + } +} +?> +]]> + + &reftitle.seealso; Yaf_Response_Abstract::getHeader - Yaf_Response_Abstract::cleanHeaders + Yaf_Response_Abstract::clearHeaders + Yaf_Response_Abstract::setAllHeaders - - - + + - Yaf_Response_Abstract::setRedirect - The setRedirect purpose +Yaf_Response_Abstract::setRedirect +重定向到另一个 URL &reftitle.description; - public boolYaf_Response_Abstract::setRedirect + public boolnullYaf_Response_Abstract::setRedirect stringurl - - - - + 将客户端重定向到另一个 URL(发送 Location 响应头)。 @@ -26,22 +23,46 @@ url - - 要跳转到的地址 - +要重定向到的地址。 - &reftitle.returnvalues; - - - +成功时返回 &true;,失败时返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_Response_Abstract::setRedirect</methodname> 示例 + +has("login")) { + /* 发送指向登录页的 Location 响应头 */ + $this->getResponse()->setRedirect("/account/login"); + return false; // 这里没有可渲染的内容 + } + } +} +?> +]]> + + + + + &reftitle.seealso; + + Yaf_Controller_Abstract::redirect + + - + Yaf_Response_Abstract::__toString @@ -13,9 +13,10 @@ private stringYaf_Response_Abstract::__toString - - - + + 按添加顺序将响应的所有 body 块拼接成一个字符串并返回。 + 当响应对象被用在字符串上下文中时,输出的正是该内容。 + @@ -25,11 +26,46 @@ &reftitle.returnvalues; - + + 字符串形式的响应 body。 + + + - + + &reftitle.examples; + + <methodname>Yaf_Response_Abstract::__toString</methodname> 示例 + +setBody("Hello")->setBody(" World", "footer"); + +/* 在字符串上下文中使用响应对象会渲染所有 body 块 */ +echo $response; +var_dump((string) $response); +?> +]]> + + &example.outputs.similar; + + + + + + &reftitle.seealso; + + Yaf_Response_Abstract::getBody + Yaf_Response_Abstract::setBody + Yaf_Response_Abstract::response + + diff --git a/reference/yaf/yaf_route_interface/assemble.xml b/reference/yaf/yaf_route_interface/assemble.xml index 511bef87f..becb08c50 100644 --- a/reference/yaf/yaf_route_interface/assemble.xml +++ b/reference/yaf/yaf_route_interface/assemble.xml @@ -1,11 +1,11 @@ - - + + Yaf_Route_Interface::assemble - 将指定路由规则组合成一个 url + 组装一个请求 @@ -16,7 +16,7 @@ arrayquery - 此方法根据参数 info 返回 url,并根据参数 query 向 url 追加查询字符串。 + 此方法根据参数 info 返回一个 url,并根据参数 query 向 url 追加查询字符串。 路由应该根据自己的路由规则来实现这个方法,做一个逆向的过程。 @@ -45,7 +45,7 @@ - + &reftitle.returnvalues; @@ -54,6 +54,85 @@ + + &reftitle.examples; + + <methodname>Yaf_Route_Interface::assemble</methodname> 示例 + +_match = $match; + $this->_route = $route; + } + + public function route(Yaf_Request_Abstract $request): bool { + if (!preg_match($this->_match, $request->getRequestUri(), $matches)) { + return false; + } + + foreach ($this->_route as $key => $value) { + if (is_string($value) && ':' === $value[0]) { + $value = $matches[substr($value, 1)]; + } + $request->setParam($key, $value); + } + $request->setRouted(); + + return true; + } + + /* 将路由规则逆向还原为一个 URL */ + public function assemble(array $info, ?array $query = null): string { + $url = "/product"; + if (isset($info[':name'])) { + $url .= "/" . $info[':name']; + } + + if (!empty($query)) { + $url .= "?" . http_build_query($query); + } + + return $url; + } +} + +$router = new Yaf_Router(); +$router->addRoute("custom", + new RewriteRoute("#^/product#", array("controller" => "product")) +); + +var_dump($router->getRoute("custom")->assemble( + array(':name' => 'book'), + array('page' => 2) +)); +?> +]]> + + &example.outputs.similar; + + + + + + + + + &reftitle.seealso; + + Yaf_Route_Interface::route + Yaf_Route_Rewrite::assemble + Yaf_Route_Map::assemble + + + - + Yaf_Route_Interface::route @@ -14,24 +14,28 @@ Yaf_Request_Abstractrequest - Yaf_Route_Interface::route 是用户自定义路由唯一需要实现的方法。 + Yaf_Route_Interface::route 是用户自定义路由唯一需要实现的方法。 - + 自 2.3.0 起,还应该实现另外一个方法,参阅 Yaf_Route_Interface::assemble。 - + - 如果此方法返回 &true;,那么路由过程将会中止。否则,Yaf_Router 将会调用路由栈中的下一个路由来路由请求。 + 如果此方法返回 &true;,那么路由过程将会中止。否则, + Yaf_Router 将会调用路由栈中的下一个路由来路由请求。 - 此方法通过调用 Yaf_Request_Abstract::setControllerNameYaf_Request_Abstract::setActionName 和 - Yaf_Request_Abstract::setModuleName 将路由结果设置为参数请求。 + 此方法通过调用 Yaf_Request_Abstract::setControllerName、 + Yaf_Request_Abstract::setActionName 和 + Yaf_Request_Abstract::setModuleName + 将路由结果设置到参数 request 中。 - 这个方法还应该调用 Yaf_Request_Abstract::setRouted 做最后的请求路由。 + 这个方法最后还应该调用 + Yaf_Request_Abstract::setRouted 将请求标记为已路由。 @@ -43,7 +47,7 @@ request - Yaf_Request_Abstract 实例。 + Yaf_Request_Abstract 实例。 @@ -58,6 +62,91 @@ + + &reftitle.examples; + + <methodname>Yaf_Route_Interface::route</methodname> 示例 + +_prefix = $prefix; + } + + public function route(Yaf_Request_Abstract $request): bool { + $uri = $request->getRequestUri(); + if (0 !== strpos($uri, $this->_prefix)) { + /* 不归我们管,让路由器尝试下一个路由 */ + return false; + } + + /* 把 URI "/api/user/list" 解析为 controller/action */ + $segments = explode("/", ltrim(substr($uri, strlen($this->_prefix)), "/")); + $controller = isset($segments[0]) ? ucfirst($segments[0]) : NULL; + $action = isset($segments[1]) ? $segments[1] : NULL; + + if (empty($controller)) { + return false; + } + + $request->setModuleName("index"); + $request->setControllerName($controller); + $request->setActionName($action); + $request->setRouted(); /* 路由过程到此结束 */ + + return true; + } + + public function assemble(array $info, ?array $query = null): string { + $uri = $this->_prefix . "/" . strtolower($info[':c']); + if (isset($info[':a'])) { + $uri .= "/" . $info[':a']; + } + + if (!empty($query)) { + $uri .= "?" . http_build_query($query); + } + + return $uri; + } +} + +/** + * 注册自定义路由 + */ +Yaf_Dispatcher::getInstance()->getRouter()->addRoute("api", new ApiRoute("/api")); +?> +]]> + + &example.outputs.similar; + + "index", + "controller" => "User", + "action" => "list", +) +]]> + + + + + + &reftitle.seealso; + + Yaf_Route_Interface::assemble + Yaf_Router::addRoute + Yaf_Request_Abstract::setRouted + + + - + - Yaf_Route_Map::__construct - The __construct purpose +Yaf_Route_Map::__construct +构造一个 Map 路由 &reftitle.description; - public Yaf_Route_Map::__construct - stringcontroller_prefer&false; - stringdelimiter"" + publicYaf_Route_Map::__construct + boolcontroller_preferfalse + stringdelimiter'' - - - + 构造一个 Map 路由。Map 路由将整个 URI 映射为一个 controller 名或 action 名。 @@ -26,27 +24,20 @@ controller_prefer - - 结果是否应该考虑作为 controller 或 action - +是否将 URI 映射为 controller 名。若为 &false;,则 URI 会被映射为 action 名。 delimiter - - - +用于在 URI 中分隔映射名称与请求参数的分隔符。若它作为以斜杠开头的路径段出现,则其后的所有内容都会被解析为请求参数,而不再属于映射名称。若为空,路由时不会进行这样的拆分。 - &reftitle.returnvalues; - - - +不返回任何值。 @@ -56,22 +47,22 @@ getRouter()->addRoute("name", - new Yaf_Route_Map()); +/** + * 向 Yaf_Router 路由栈添加一个 Map 路由 + */ +Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name", + new Yaf_Route_Map()); ?> ]]> &example.outputs.similar; "product_foo_bar", + "action" => "product_foo_bar", ) ]]> @@ -81,29 +72,29 @@ array( getRouter()->addRoute("name", - new Yaf_Route_Map(true, "_")); +/** + * 向 Yaf_Router 路由栈添加一个带分隔符的 Map 路由 + */ +Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name", + new Yaf_Route_Map(true, "_")); ?> ]]> &example.outputs.similar; "user_list", + "controller" => "User_List", ) /** - * and request parameters: + * 以及请求参数: */ array( - "foo" => 22, + "foo" => "22", ) ]]> @@ -113,18 +104,18 @@ array( array( - "type" => "map", //Yaf_Route_Map route - "controllerPrefer" => FALSE, - "delimiter" => "#!", - ), - ); - Yaf_Dispatcher::getInstance()->getRouter()->addConfig( - new Yaf_Config_Simple($config)); +/** + * 通过调用 addConfig 向路由栈添加一个 Map 路由 + */ +$config = array( + "name" => array( + "type" => "map", // Yaf_Route_Map 路由 + "controllerPrefer" => FALSE, + "delimiter" => "#!", + ), +); +Yaf_Dispatcher::getInstance()->getRouter()->addConfig( + new Yaf_Config_Simple($config)); ?> ]]> @@ -134,15 +125,10 @@ array( &reftitle.seealso; - Yaf_Router::addRoute - Yaf_Route_Static - Yaf_Route_Supervar - Yaf_Route_Simple - Yaf_Route_Regex - Yaf_Route_Rewrite - - - + Yaf_Route_Map::route + Yaf_Route_Map::assemble + + - + - Yaf_Route_Map::route - The route purpose +Yaf_Route_Map::route +路由请求 @@ -13,12 +13,8 @@ public boolYaf_Route_Map::route Yaf_Request_Abstractrequest - - - - - &warn.undocumented.func; - + 将整个 URI 映射为一个 controller 名或 action 名来路由请求:URI 的各级路径段会用下划线连接起来组成该名称。 + 若构造路由时开启了 controller 优先标志,映射结果会被设置为 controller 名,否则设置为 action 名。 @@ -27,22 +23,73 @@ request - - - +要路由的 Yaf_Request_Abstract 实例。 - &reftitle.returnvalues; - - - +始终返回 &true;。注意:即使 URI 为空,Map 路由也会接收该请求,此时不会设置任何名称。 + + &reftitle.examples; + + <methodname>Yaf_Route_Map::route</methodname> 示例 + +setRequestUri("/product/foo/bar"); +$route = new Yaf_Route_Map(); +var_dump($route->route($request)); +var_dump($request->getActionName()); +?> +]]> + + &example.outputs.similar; + + + + + + <methodname>Yaf_Route_Map::route</methodname> 示例 + +setRequestUri("/user/list/_/foo/22"); + +$route = new Yaf_Route_Map(true, "_"); +var_dump($route->route($request)); +var_dump($request->getControllerName()); +var_dump($request->getParam("foo")); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Route_Map::__construct + Yaf_Route_Map::assemble + + - - + Yaf_Route_Regex::__construct @@ -68,9 +67,9 @@ 字符串,用于组合 url,参阅 Yaf_Route_Regex::assemble - - 2.3.0 起引入该参数 - + + 2.3.0 起引入该参数 + diff --git a/reference/yaf/yaf_route_regex/route.xml b/reference/yaf/yaf_route_regex/route.xml index 531d2b369..b6a5c6d00 100644 --- a/reference/yaf/yaf_route_regex/route.xml +++ b/reference/yaf/yaf_route_regex/route.xml @@ -1,10 +1,10 @@ - + - Yaf_Route_Regex::route - The route purpose +Yaf_Route_Regex::route +路由请求 @@ -13,12 +13,7 @@ public boolYaf_Route_Regex::route Yaf_Request_Abstractrequest - - 路由一个传进来的请求。 - - - &warn.undocumented.func; - + 用正则表达式路由请求:将 URI 与传给构造函数的模式进行匹配,路由结果(module、controller 和 action)取自捕获的变量,并按 map 参数进行映射。 @@ -27,22 +22,62 @@ request - - - +要路由的 Yaf_Request_Abstract 实例。 - &reftitle.returnvalues; - - 如果 Yaf_Route_Regex::_construct 的第一个参数给出的模式与请求 uri 匹配,则返回 &true;,否则返回 &false;。 - +若 URI 匹配则返回 &true;,否则返回 &false;,路由器将尝试下一个路由。 + + &reftitle.examples; + + <methodname>Yaf_Route_Regex::route</methodname> 示例 + + "product", // 路由到 product 控制器 + ), + array( + 1 => "name", // $request->getParam("name") 的值将是 "php-book" + ) +); +var_dump($route->route($request)); + +var_dump($request->getControllerName()); +var_dump($request->getParam("name")); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Route_Regex::__construct + Yaf_Route_Regex::match + Yaf_Route_Regex::assemble + + - + diff --git a/reference/yaf/yaf_route_rewrite/route.xml b/reference/yaf/yaf_route_rewrite/route.xml index fc50fe45f..7823bbefa 100644 --- a/reference/yaf/yaf_route_rewrite/route.xml +++ b/reference/yaf/yaf_route_rewrite/route.xml @@ -1,10 +1,10 @@ - + Yaf_Route_Rewrite::route - The route purpose + 路由请求 @@ -13,10 +13,7 @@ public boolYaf_Route_Rewrite::route Yaf_Request_Abstractrequest - - - - + 将 URI 与传给构造函数的匹配模式进行匹配来路由请求。匹配成功时,module、controller 和 action 取自 route 数组,其中以冒号开头的值会从匹配到的变量中解析。 @@ -25,9 +22,7 @@ request - - - + 要路由的 Yaf_Request_Abstract 实例。 @@ -35,12 +30,53 @@ &reftitle.returnvalues; - - - + 若 URI 匹配则返回 &true;,否则返回 &false;,路由器将尝试下一个路由。 + + &reftitle.examples; + + <methodname>Yaf_Route_Rewrite::route</methodname> 示例 + + "product", // 路由到 product 控制器 + ), + array() // 没有默认值 +); +var_dump($route->route($request)); + +var_dump($request->getControllerName()); +var_dump($request->getParam("name")); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Route_Rewrite::__construct + Yaf_Route_Rewrite::match + Yaf_Route_Rewrite::assemble + + - + Yaf_Route_Simple::__construct - Yaf_Route_Simple 构造方法 + 构造一个 Simple 路由 @@ -15,12 +15,7 @@ stringcontroller_name stringaction_name - - Yaf_Route_Simple 将从 query 字符串中获得路由信息。这个构造方法的参数会被作为键到 $_GET 中去寻找路由信息。 - - - &warn.undocumented.func; - + 构造一个 Simple 路由。Simple 路由会从与三个参数同名的查询变量中读取 module、controller 和 action 名。例如,当构造参数为 modulecontrolleraction 时,该路由会匹配形如 /?module=foo&controller=bar&action=list 的请求。 @@ -29,25 +24,19 @@ module_name - - module 信息的键名。 - + 携带 module 名的查询变量名。 controller_name - - controller 信息的键名。 - + 携带 controller 名的查询变量名。 action_name - - action 信息的键名。 - + 携带 action 名的查询变量名。 @@ -55,49 +44,51 @@ &reftitle.returnvalues; - - 总是返回 &true;。 - + 不返回任何值。 &reftitle.examples; - <function>Yaf_Route_Simple::route</function> 示例 + <methodname>Yaf_Route_Simple::__construct</methodname> 示例 addRoute("simple", $route); +/** + * 向 Yaf_Router 路由栈添加一个 Simple 路由。 + * + * 该路由会匹配如下请求: + * http://yourdomain.com/index.php?m=main&c=product&a=detail + */ +Yaf_Dispatcher::getInstance()->getRouter()->addRoute("simple", + new Yaf_Route_Simple("m", "c", "a") +); ?> ]]> - - - <function>Yaf_Route_Simple::route</function>example - + &example.outputs.similar; + module = default(index), controller = a, action = b - -Request: http://yourdomain.com/path -=> module = default(index), controller = default(index), action = default(index) +/* http://yourdomain.com/index.php?m=main&c=product&a=detail + * 会路由为以下值: + */ +array( + "module" => "main", + "controller" => "product", + "action" => "detail", +) ]]> - + &reftitle.seealso; - Yaf_Route_Supervar::route - Yaf_Route_Static::route - Yaf_Route_Regex::route - Yaf_Route_Rewrite::route - Yaf_Route_Map::route - - - + Yaf_Route_Simple::route + Yaf_Route_Simple::assemble + + - + - Yaf_Route_Simple::route - 路由请求 +Yaf_Route_Simple::route +路由请求 @@ -13,12 +13,7 @@ public boolYaf_Route_Simple::route Yaf_Request_Abstractrequest - - 参阅 Yaf_Route_Simple::__construct - - - &warn.undocumented.func; - + 用查询参数路由请求:从与传给构造函数的参数同名的查询变量中获取 module、controller 和 action 名。 @@ -27,32 +22,55 @@ request - - - +要路由的 Yaf_Request_Abstract 实例。 - &reftitle.returnvalues; - - 始终为 &true; - +若三个查询变量中任一存在则返回 &true;,否则返回 &false;,路由器将尝试下一个路由。 + + + + &reftitle.examples; + + <methodname>Yaf_Route_Simple::route</methodname> 示例 + +route($request)); + +var_dump($request->getModuleName()); +var_dump($request->getControllerName()); +var_dump($request->getActionName()); +?> +]]> + + &example.outputs.similar; + + + + &reftitle.seealso; - Yaf_Route_Supervar::route - Yaf_Route_Static::route - Yaf_Route_Regex::route - Yaf_Route_Rewrite::route - Yaf_Route_Map::route - - - + Yaf_Route_Simple::__construct + Yaf_Route_Simple::assemble + + - + - Yaf_Route_Static::match - The match purpose +Yaf_Route_Static::match +判断路由是否匹配 URI &reftitle.description; - public voidYaf_Route_Static::match + public boolYaf_Route_Static::match stringuri - - - - - &warn.undocumented.func; - + 判断静态路由是否匹配某个 URI。由于静态路由可以匹配任何 URI,此方法总是返回 &true;。 @@ -27,22 +22,47 @@ uri - - - +要检查的 URI。 - &reftitle.returnvalues; - - - +总是返回 &true;。 + + &reftitle.examples; + + <methodname>Yaf_Route_Static::match</methodname> 示例 + +match("/product/detail/id/10")); +var_dump($route->match("/")); +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_Route_Static::route + + - + - Yaf_Route_Static::route - 路由请求 +Yaf_Route_Static::route +路由请求 @@ -13,12 +13,8 @@ public boolYaf_Route_Static::route Yaf_Request_Abstractrequest - - - - - &warn.undocumented.func; - + 按照 PATH_INFO 风格的 URI 对请求进行路由:只有当第一段路径是已注册的模块之一时,才将其视为模块名,否则按顺序将各段路径映射为控制器和动作。剩余的路径段成为请求参数。 + 例如,在没有名为 foo 的模块时,/foo/bar/age/10 会路由到控制器 Foo、动作 bar,其中参数 age 的值为 10 @@ -27,59 +23,55 @@ request - - - +要路由的 Yaf_Request_Abstract 实例。 - &reftitle.returnvalues; - - 总是返回 &true; - +总是返回 &true;。 &reftitle.examples; - <function>Yaf_Route_Static::route</function>example - + <methodname>Yaf_Route_Static::route</methodname> 示例 + module = index, controller=a, action=b - -//assuming ap.action_prefer = On -Request: http://yourdomain.com/b -=> module = default(index), controller = default(index), action = b - -//assuming ap.action_prefer = Off -Request: http://yourdomain.com/b -=> module = default(index), controller = b, action = default(index) +getRouter()->getRoute("_default"); +var_dump($route->route($request)); -Request: http://yourdomain.com/a/b/foo/bar/test/a/id/4 -=> module = default(index), controller = a, action = b, request parameters: foo = bar, test = a, id = 4 +var_dump($request->getControllerName()); +var_dump($request->getActionName()); +var_dump($request->getParam("id")); +?> ]]> + &example.outputs.similar; + + + &reftitle.seealso; - Yaf_Route_Supervar::route - Yaf_Route_Simple::route - Yaf_Route_Regex::route - Yaf_Route_Rewrite::route - Yaf_Route_Map::route - - - - + Yaf_Route_Static::match + Yaf_Route_Static::assemble + + - + - Yaf_Route_Supervar::__construct - The __construct purpose +Yaf_Route_Supervar::__construct +构造超级变量路由 &reftitle.description; - public Yaf_Route_Supervar::__construct + publicYaf_Route_Supervar::__construct stringsupervar_name - - Yaf_Route_Supervar 类似于 Yaf_Route_Static,不同的是 - Yaf_Route_Supervar 在 query 字符串中寻找路径信息,参数 supervar_name 是键。 - + 构造一个超级变量路由。超级变量路由期望某个查询变量携带 PATH_INFO 风格的 URI。 @@ -26,51 +23,53 @@ supervar_name - - 键名 - +携带 URI 的查询变量名。 - &reftitle.returnvalues; - - +不返回值。 &reftitle.examples; - <classname>Yaf_Route_Supervar</classname> 示例 + <methodname>Yaf_Route_Supervar::__construct</methodname> 示例 getRouter()->addRoute( - "name", - new Yaf_Route_Supervar("r") - ); +/** + * 向 Yaf_Router 的路由栈中添加一个超级变量路由。 + * + * 期望 URI 携带在下面指定的查询变量中, + * 例如:http://yourdomain.com/index.php?_url=/product/detail/id/10 + */ +Yaf_Dispatcher::getInstance()->getRouter()->addRoute("supervar", + new Yaf_Route_Supervar("_url") +); ?> ]]> &example.outputs.similar; index(default), - "controller" => ctr, - "action" => act, - "params" => array( - "var" => value, - ) - ) +/* http://yourdomain.com/index.php?_url=/product/detail/id/10 + * 将路由到以下值: + */ +array( + "controller" => "product", + "module" => "index", //(default) + "action" => "detail", //(default) +) + +/** + * 以及请求参数: + */ +array( + "id" => 10 +) ]]> @@ -79,16 +78,10 @@ &reftitle.seealso; - Yaf_Router::addRoute - Yaf_Router::addConfig - Yaf_Route_Static - Yaf_Route_Regex - Yaf_Route_Simple - Yaf_Route_Rewrite - Yaf_Route_Map - - - + Yaf_Route_Supervar::route + Yaf_Route_Supervar::assemble + + - + - Yaf_Route_Supervar::route - The route purpose +Yaf_Route_Supervar::route +路由请求 @@ -13,12 +13,7 @@ public boolYaf_Route_Supervar::route Yaf_Request_Abstractrequest - - - - - &warn.undocumented.func; - + 使用超级变量对请求进行路由:期望构造方法中指定的查询变量携带 PATH_INFO 风格的 URI,之后按照 Yaf_Route_Static 的方式进行解析。 @@ -27,22 +22,55 @@ request - - - +要路由的 Yaf_Request_Abstract 实例。 - &reftitle.returnvalues; - - 如果在 $_GET 中有键(在 Yaf_Route_Supervar::__construct 中定义),返回 &true;,否则返回 &false;。 - +如果该变量存在且值是字符串,返回 &true;,否则返回 &false;,此时路由器会尝试下一个路由。 + + &reftitle.examples; + + <methodname>Yaf_Route_Supervar::route</methodname> 示例 + +route($request)); + +var_dump($request->getControllerName()); +var_dump($request->getActionName()); +var_dump($request->getParam("id")); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Route_Supervar::__construct + Yaf_Route_Supervar::assemble + + - + Yaf_Router::__construct @@ -16,9 +16,6 @@ - - &warn.undocumented.func; - @@ -33,6 +30,39 @@ + + &reftitle.examples; + + <methodname>Yaf_Router::__construct</methodname> 示例 + + 在通常的用法中,路由器不需要手动构造,它由调度器(dispatcher)持有: + + +getRouter(); +var_dump($router); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Dispatcher::getRouter + Yaf_Router::addRoute + + diff --git a/reference/yaf/yaf_router/getcurrentroute.xml b/reference/yaf/yaf_router/getcurrentroute.xml index 23a73c769..f9cb9d28d 100644 --- a/reference/yaf/yaf_router/getcurrentroute.xml +++ b/reference/yaf/yaf_router/getcurrentroute.xml @@ -1,6 +1,6 @@ - + Yaf_Router::getCurrentRoute @@ -16,9 +16,9 @@ 获取当前路由进程中正在起作用的路由名 - + 需要在路由进程结束之后调用此方法,在这之前,这个方法会一直返回 &null;。 - + diff --git a/reference/yaf/yaf_router/getroute.xml b/reference/yaf/yaf_router/getroute.xml index f4c94c847..f02ab37c8 100644 --- a/reference/yaf/yaf_router/getroute.xml +++ b/reference/yaf/yaf_router/getroute.xml @@ -1,6 +1,6 @@ - + Yaf_Router::getRoute @@ -14,7 +14,8 @@ stringname - 通过名字检索路由,参阅 Yaf_Router::getCurrentRoute + 通过名字检索路由,参阅 + Yaf_Router::getCurrentRoute @@ -31,6 +32,45 @@ + + &reftitle.examples; + + <methodname>Yaf_Router::getRoute</methodname> 示例 + +getRouter(); + + $router->addRoute("rewrite", new Yaf_Route_Rewrite( + "/product/:id", + ["controller" => "product", "action" => "detail"] + )); + + /* 查看指定名字下注册的是什么 */ + var_dump($router->getRoute("rewrite")); + + /* 未知的名字返回 NULL */ + var_dump($router->getRoute("unknown")); + } +} +?> +]]> + + &example.outputs.similar; + + + + + + &reftitle.seealso; @@ -38,8 +78,8 @@ Yaf_Plugin_Abstract Yaf_Router::addRoute Yaf_Router::getCurrentRoute - - + + diff --git a/reference/yaf/yaf_router/getroutes.xml b/reference/yaf/yaf_router/getroutes.xml index 32e093c2e..b60a95caa 100644 --- a/reference/yaf/yaf_router/getroutes.xml +++ b/reference/yaf/yaf_router/getroutes.xml @@ -1,6 +1,6 @@ - + Yaf_Router::getRoutes @@ -30,6 +30,54 @@ + + &reftitle.examples; + + <methodname>Yaf_Router::getRoutes</methodname> 示例 + +getRouter(); + + $router->addRoute("rewrite", new Yaf_Route_Rewrite( + "/product/:id", + ["controller" => "product", "action" => "detail"] + )); + + /* 除了自定义路由之外,内置的 "_default" 路由 + 也是路由表的一部分 */ + var_dump(array_keys($router->getRoutes())); + } +} +?> +]]> + + &example.outputs.similar; + + + string(8) "_default" + [1]=> + string(7) "rewrite" +} +]]> + + + + + + &reftitle.seealso; + + Yaf_Router::getRoute + Yaf_Router::addRoute + Yaf_Dispatcher::getRouter + + diff --git a/reference/yaf/yaf_router/route.xml b/reference/yaf/yaf_router/route.xml index 8af2ac9f1..d8b708f28 100644 --- a/reference/yaf/yaf_router/route.xml +++ b/reference/yaf/yaf_router/route.xml @@ -1,39 +1,94 @@ - + - Yaf_Router::route - The route purpose +Yaf_Router::route +路由请求 &reftitle.description; - public boolYaf_Router::route + public boolnullYaf_Router::route Yaf_Request_Abstractrequest - - - - - &warn.undocumented.func; - + 使用已注册的路由对请求进行路由。 + 路由按注册顺序的倒序依次尝试。第一个认领该请求的路由胜出;随后请求被标记为已路由(参见 Yaf_Request_Abstract::setRouted),并记录胜出的路由名,可通过 Yaf_Router::getCurrentRoute 获取。 + 除非配置了自定义的默认路由,否则默认路由注册为 _default,即 Yaf_Route_Static &reftitle.parameters; - &no.function.parameters; + + + request + +要路由的 Yaf_Request_Abstract 实例。 + + + - &reftitle.returnvalues; - - - +请求成功路由时返回 &true;,没有路由匹配时(例如畸形的 URI)返回 &false;,此时调度器会停止。 + + &reftitle.examples; + + <methodname>Yaf_Router::route</methodname> 示例 + +getRouter(); + $router->addRoute("rewrite", new Yaf_Route_Rewrite( + "/product/:id", + ["controller" => "product", "action" => "detail"] + )); + + /* 路由一个手工构造的请求,例如在单元测试中 */ + $request = new Yaf_Request_Simple("CLI", null, "index.php", + "/product/123", null); + + if ($router->route($request)) { + var_dump($router->getCurrentRoute()); + var_dump($request->getControllerName()); + var_dump($request->getActionName()); + var_dump($request->getParam("id")); + } else { + /* 没有路由匹配 */ + } + } +} +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Router::addRoute + Yaf_Router::getCurrentRoute + Yaf_Dispatcher::dispatch + + - + - Yaf_Session::__construct - Yaf_Session 构造方法 +Yaf_Session::__construct +Yaf_Session 构造方法 &reftitle.description; - private Yaf_Session::__construct + privateYaf_Session::__construct - - - - - &warn.undocumented.func; - + 构造方法是私有的:Yaf_Session 实现了单例模式,不能直接实例化。请使用 Yaf_Session::getInstance 获取会话实例。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +不返回值。 + + &reftitle.examples; + + <methodname>Yaf_Session::__construct</methodname> 示例 + +start(); + +$session->set("user_id", 42); +echo $session->get("user_id"); +?> +]]> + + + + + &reftitle.seealso; + + Yaf_Session::getInstance + Yaf_Session::start + + - + - Yaf_Session::count - The count purpose +Yaf_Session::count +统计会话条目的数量 &reftitle.description; - public voidYaf_Session::count + public intYaf_Session::count - - - - - &warn.undocumented.func; - + 返回会话中条目的数量。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +以整数形式返回会话条目的数量。 + + &reftitle.examples; + + <methodname>Yaf_Session::count</methodname> 示例 + +start(); +$session->set("user_id", 42); +$session->set("cart_items", 3); + +var_dump(count($session)); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Session::get + Yaf_Session::has + + - + - Yaf_Session::current - The current purpose +Yaf_Session::current +获取当前会话条目的值 &reftitle.description; - public voidYaf_Session::current + public mixedYaf_Session::current - - - - - &warn.undocumented.func; - + 返回迭代时当前会话条目的值。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +当前会话条目的值。 + + &reftitle.examples; + + <methodname>Yaf_Session::current</methodname> 示例 + +start(); +$session->set("user_id", 42); +$session->set("is_vip", true); + +foreach ($session as $key => $value) { + // 迭代时 Yaf_Session::current() 会依次返回每个值 + echo "$key => "; + var_dump($value); +} +?> +]]> + + &example.outputs.similar; + + int(42) +is_vip => bool(true) +]]> + + + + + + &reftitle.seealso; + + Yaf_Session::key + Yaf_Session::next + Yaf_Session::rewind + Yaf_Session::valid + + - + - Yaf_Session::del - The del purpose +Yaf_Session::del +删除会话键 &reftitle.description; - public voidYaf_Session::del + public boolYaf_Session::del stringname - - - - - &warn.undocumented.func; - + 删除会话键及其对应的值。 @@ -27,22 +22,55 @@ name - - - +要删除的会话键。 - &reftitle.returnvalues; - - - +成功时返回 &true;,失败时返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Session::del</methodname> 示例 + +start(); + $expected = $session->get("captcha_code"); + + // 一次性验证码:使用后立即删除 + $session->del("captcha_code"); + + if ($expected === null + || $this->getRequest()->getPost("code") !== $expected) { + echo "invalid captcha"; + } + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Session::get + Yaf_Session::set + Yaf_Session::has + + - + - Yaf_Session::__get - The __get purpose +Yaf_Session::get +获取会话值 &reftitle.description; - public voidYaf_Session::__get - stringname + public mixedYaf_Session::get + stringnameNULL - - - - - &warn.undocumented.func; - + 按名字获取会话值。如果省略 name 或其值为 &null;,则返回整个会话数组。 @@ -27,22 +22,52 @@ name - - - +要获取的会话键,传 &null; 则获取全部会话数据。 - &reftitle.returnvalues; - - - +会话值,键不存在时返回 &null;。当 name 为 &null; 时,返回完整的会话数组。 + + &reftitle.examples; + + <methodname>Yaf_Session::get</methodname> 示例 + +start(); + $userId = $session->get("user_id"); + if ($userId === null) { + return $this->redirect("/account/login"); + } + + echo "welcome back, user #", $userId; + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Session::set + Yaf_Session::has + Yaf_Session::del + + - + - Yaf_Session::getInstance - The getInstance purpose +Yaf_Session::getInstance +获取会话单例 &reftitle.description; - public static voidYaf_Session::getInstance + public static Yaf_SessionYaf_Session::getInstance - - - - - &warn.undocumented.func; - + 返回单例 Yaf_Session 实例,必要时先创建它。首次访问时会话会自动启动。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +Yaf_Session 单例实例,如果会话无法启动则返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_Session::getInstance</methodname> 示例 + +start(); +$session->set("user_id", 42); +// …… 之后,在应用的其他位置 +$same = Yaf_Session::getInstance(); + +var_dump($same === $session); +var_dump($same->get("user_id")); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Session::start + Yaf_Session::get + Yaf_Session::set + + - + - Yaf_Session::has - The has purpose +Yaf_Session::has +检查会话键是否存在 &reftitle.description; - public voidYaf_Session::has + public boolYaf_Session::has stringname - - - - - &warn.undocumented.func; - + 检查会话键是否存在。 @@ -27,22 +22,52 @@ name - - - +要检查的会话键。 - &reftitle.returnvalues; - - - +键存在时返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Session::has</methodname> 示例 + +start(); + if (!$session->has("user_id")) { + $this->redirect("/account/login"); + return false; + } + + return true; + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Session::get + Yaf_Session::set + Yaf_Session::del + + - + - Yaf_Session::__isset - The __isset purpose +Yaf_Session::__isset +检查会话键是否存在 &reftitle.description; - public voidYaf_Session::__isset + public boolYaf_Session::__isset stringname - - - - - &warn.undocumented.func; - + 检查会话键是否存在。此方法是 Yaf_Session::has 的别名,在对会话对象使用 isset() 时会被调用。 @@ -27,22 +22,50 @@ name - - - +要检查的会话键。 - &reftitle.returnvalues; - - - +键存在时返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Session::__isset</methodname> 示例 + +start(); +$session->user_id = 42; + +var_dump(isset($session->user_id)); +var_dump(isset($session->user_name)); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Session::has + Yaf_Session::get + + - + - Yaf_Session::key - The key purpose +Yaf_Session::key +获取当前会话条目的键 &reftitle.description; - public voidYaf_Session::key + public mixedYaf_Session::key - - - - - &warn.undocumented.func; - + 返回迭代时当前会话条目的键。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +当前会话条目的键。 + + &reftitle.examples; + + <methodname>Yaf_Session::key</methodname> 示例 + +start(); +$session->set("user_id", 42); +$session->set("lang", "en"); + +for ($session->rewind(); $session->valid(); $session->next()) { + echo $session->key(), " => ", var_export($session->current(), true), PHP_EOL; +} +?> +]]> + + &example.outputs.similar; + + 42 +lang => 'en' +]]> + + + + + + &reftitle.seealso; + + Yaf_Session::current + Yaf_Session::next + Yaf_Session::rewind + Yaf_Session::valid + + - + - Yaf_Session::next - The next purpose +Yaf_Session::next +前进到下一个会话条目 @@ -13,27 +13,58 @@ public voidYaf_Session::next - - - - - &warn.undocumented.func; - + 将内部迭代器移动到下一个会话条目。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +不返回值。 + + &reftitle.examples; + + <methodname>Yaf_Session::next</methodname> 示例 + +start(); +$session->set("user_id", 42); +$session->set("lang", "en"); + +$session->rewind(); +echo $session->key(), PHP_EOL; + +$session->next(); +echo $session->key(), PHP_EOL; +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Session::current + Yaf_Session::key + Yaf_Session::rewind + Yaf_Session::valid + + - + - Yaf_Session::offsetExists - The offsetExists purpose +Yaf_Session::offsetExists +检查会话键是否存在(ArrayAccess) &reftitle.description; - public voidYaf_Session::offsetExists - stringname + public boolYaf_Session::offsetExists + mixedname - - - - - &warn.undocumented.func; - + 检查会话键是否存在。此方法是 Yaf_Session::has 的别名,在以数组方式使用 isset() 时会被调用。 @@ -27,22 +22,50 @@ name - - - +要检查的会话键。 - &reftitle.returnvalues; - - - +键存在时返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Session::offsetExists</methodname> 示例 + +start(); +$session["user_id"] = 42; + +var_dump(isset($session["user_id"])); +var_dump(isset($session["user_name"])); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Session::has + Yaf_Session::offsetGet + + - + - Yaf_Session::offsetGet - The offsetGet purpose +Yaf_Session::offsetGet +获取会话值(ArrayAccess) &reftitle.description; - public voidYaf_Session::offsetGet - stringname + public mixedYaf_Session::offsetGet + mixedname - - - - - &warn.undocumented.func; - + 按键获取会话值。此方法是 Yaf_Session::get 的别名,在以数组方式读取会话对象时会被调用。 @@ -27,22 +22,53 @@ name - - - +要获取的会话键。 - &reftitle.returnvalues; - - - +会话值,键不存在时返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_Session::offsetGet</methodname> 示例 + +start(); + // 以数组方式读取时会调用 offsetGet() + $userId = $session["user_id"]; + if ($userId === null) { + return $this->redirect("/account/login"); + } + + echo "logged in as user #", $userId; + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Session::get + Yaf_Session::offsetSet + Yaf_Session::offsetUnset + + - + - Yaf_Session::offsetSet - The offsetSet purpose +Yaf_Session::offsetSet +设置会话值(ArrayAccess) &reftitle.description; public voidYaf_Session::offsetSet - stringname - stringvalue + mixedname + mixedvalue - - - - - &warn.undocumented.func; - + 设置一个会话值。当使用数组语法写入会话对象时,会调用此方法。 @@ -28,30 +23,58 @@ name - - - +要设置的会话键。 value - - - +要存储的值。 - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Session::offsetSet</methodname> 示例 + +start(); + // 使用数组语法写入会调用 offsetSet() + $session["user_id"] = $user->getId(); + $session["login_time"] = time(); + + return $this->redirect("/dashboard"); + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Session::set + Yaf_Session::offsetGet + Yaf_Session::offsetUnset + + - + - Yaf_Session::offsetUnset - The offsetUnset purpose +Yaf_Session::offsetUnset +移除会话键(ArrayAccess) &reftitle.description; public voidYaf_Session::offsetUnset - stringname + mixedname - - - - - &warn.undocumented.func; - + 移除一个会话键及其值。当对会话对象使用数组语法调用 unset() 时,会调用此方法。 @@ -27,22 +22,52 @@ name - - - +要移除的会话键。 - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Session::offsetUnset</methodname> 示例 + +start(); +$session["captcha_code"] = "8X2Q"; + +// ... 验证码校验通过后,删除这个一次性验证码 +unset($session["captcha_code"]); + +var_dump(isset($session["captcha_code"])); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Session::del + Yaf_Session::offsetGet + Yaf_Session::offsetSet + + - + - Yaf_Session::rewind - The rewind purpose +Yaf_Session::rewind +将会话迭代器重置到第一个条目 @@ -13,27 +13,63 @@ public voidYaf_Session::rewind - - - - - &warn.undocumented.func; - + 将内部迭代器回退到第一个会话条目。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Session::rewind</methodname> 示例 + +start(); +$session->set("user_id", 42); +$session->set("lang", "en"); + +foreach ($session as $key => $value) { + echo "$key => $value", PHP_EOL; +} + +// 新的 foreach 会隐式地再次调用 rewind() +foreach ($session as $key => $value) { + echo "$key => $value", PHP_EOL; +} +?> +]]> + + &example.outputs.similar; + + 42 +lang => en +user_id => 42 +lang => en +]]> + + + + + + &reftitle.seealso; + + Yaf_Session::current + Yaf_Session::key + Yaf_Session::next + Yaf_Session::valid + + - + - Yaf_Session::__set - The __set purpose +Yaf_Session::set +设置会话值 &reftitle.description; - public voidYaf_Session::__set + public boolYaf_Session::set stringname - stringvalue + mixedvalue - - - - - &warn.undocumented.func; - + 设置一个会话值。 @@ -28,30 +23,57 @@ name - - - +要设置的会话键。 value - - - +要存储的值。 - &reftitle.returnvalues; - - - +成功时返回 &true;,失败时返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Session::set</methodname> 示例 + +start(); + $session->set("user_id", $user->getId()); + $session->set("login_time", time()); + + return $this->redirect("/dashboard"); + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_Session::get + Yaf_Session::has + Yaf_Session::del + + - + - Yaf_Session::start - The start purpose +Yaf_Session::start +启动会话 &reftitle.description; - public voidYaf_Session::start + public Yaf_SessionYaf_Session::start - - - - - &warn.undocumented.func; - + 如果会话尚未启动,则启动它。内部调用 PHP 原生的会话启动机制。多次调用此方法是安全的。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +返回 Yaf_Session 实例。 + + &reftitle.examples; + + <methodname>Yaf_Session::start</methodname> 示例 + +start(); + +$session->set("user_id", 42); +echo $session->get("user_id"); +?> +]]> + + + + + &reftitle.seealso; + + Yaf_Session::getInstance + + - + - Yaf_Session::__unset - The __unset purpose +Yaf_Session::__unset +移除会话键 @@ -13,12 +13,7 @@ public voidYaf_Session::__unset stringname - - - - - &warn.undocumented.func; - + 移除一个会话键及其值。当对会话对象的属性使用 unset() 时,会调用此方法。 @@ -27,22 +22,51 @@ name - - - +要移除的会话键。 - &reftitle.returnvalues; - - - +没有返回值。 + + &reftitle.examples; + + <methodname>Yaf_Session::__unset</methodname> 示例 + +start(); +$session->user_id = 42; + +// ... 当用户注销时 +unset($session->user_id); + +var_dump(isset($session->user_id)); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Session::del + Yaf_Session::offsetUnset + + - + - Yaf_Session::valid - The valid purpose +Yaf_Session::valid +检查当前会话位置是否有效 &reftitle.description; - public voidYaf_Session::valid + public boolYaf_Session::valid - - - - - &warn.undocumented.func; - + 检查会话迭代器的当前位置是否有效。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +当前位置有效时返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_Session::valid</methodname> 示例 + +start(); +$session->set("user_id", 42); + +$session->rewind(); +var_dump($session->valid()); + +$session->next(); +// 越过最后一个条目后,位置不再有效 +var_dump($session->valid()); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Session::current + Yaf_Session::key + Yaf_Session::next + Yaf_Session::rewind + + - + - Yaf_View_Interface::assign - 为视图引擎分配模板变量 +Yaf_View_Interface::assign +为视图分配变量 &reftitle.description; abstract public boolYaf_View_Interface::assign - stringname - stringvalue + mixedname + mixedvalueNULL - - 为视图引擎分配变量, 在视图模板中可以直接通过 ${$name} 获取模板变量值 - - - &warn.undocumented.func; - + 为视图分配变量。被分配的变量在模板中可以通过其名称访问。 @@ -28,30 +23,97 @@ name - - - +变量在模板中可用的名称。 value - - - +要分配的值。 - &reftitle.returnvalues; - - - +返回值由具体实现定义。默认的视图引擎 Yaf_View_Simple 返回视图实例。 + + &reftitle.examples; + + <methodname>Yaf_View_Interface::assign</methodname> 示例 + +tpl_dir = $template_dir; + } + + public function assign($name, $value = null) + { + $this->vars[$name] = $value; + return true; + } + + public function display($tpl, $tpl_vars = null) + { + echo $this->render($tpl, $tpl_vars); + return true; + } + public function render($tpl, $tpl_vars = null) + { + extract($this->vars); + if ($tpl_vars !== null) { + extract($tpl_vars); + } + ob_start(); + include $this->tpl_dir . "/" . $tpl; + return ob_get_clean(); + } + + public function setScriptPath($template_dir) + { + $this->tpl_dir = $template_dir; + return $this; + } + + public function getScriptPath() + { + return $this->tpl_dir; + } +} + +/* 在 bootstrap 中将自定义视图引擎挂载到 dispatcher */ +class Bootstrap extends Yaf_Bootstrap_Abstract +{ + public function _initView(Yaf_Dispatcher $dispatcher) + { + $dispatcher->setView(new MyView(APPLICATION_PATH . "/views")); + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_View_Interface::display + Yaf_View_Interface::render + Yaf_View_Interface::setScriptPath + Yaf_View_Interface::getScriptPath + + - + - Yaf_View_Interface::display - 渲染并输出模板 +Yaf_View_Interface::display +渲染并输出模板 @@ -12,14 +12,9 @@ abstract public boolYaf_View_Interface::display stringtpl - arraytpl_vars + arraytpl_varsNULL - - 渲染模板并立即输出结果 - - - &warn.undocumented.func; - + 渲染模板,并将结果直接输出。 @@ -28,30 +23,97 @@ tpl - - - +模板的路径,相对于模板目录。 tpl_vars - - - +仅供该模板使用的可选变量;它们会覆盖同名的已分配变量。 - &reftitle.returnvalues; - - - +成功时返回 &true;,失败时返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_View_Interface::display</methodname> 示例 + +tpl_dir = $template_dir; + } + + public function assign($name, $value = null) + { + $this->vars[$name] = $value; + return true; + } + + public function display($tpl, $tpl_vars = null) + { + echo $this->render($tpl, $tpl_vars); + return true; + } + public function render($tpl, $tpl_vars = null) + { + extract($this->vars); + if ($tpl_vars !== null) { + extract($tpl_vars); + } + ob_start(); + include $this->tpl_dir . "/" . $tpl; + return ob_get_clean(); + } + + public function setScriptPath($template_dir) + { + $this->tpl_dir = $template_dir; + return $this; + } + + public function getScriptPath() + { + return $this->tpl_dir; + } +} + +/* 在 bootstrap 中将自定义视图引擎挂载到 dispatcher */ +class Bootstrap extends Yaf_Bootstrap_Abstract +{ + public function _initView(Yaf_Dispatcher $dispatcher) + { + $dispatcher->setView(new MyView(APPLICATION_PATH . "/views")); + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_View_Interface::render + Yaf_View_Interface::assign + Yaf_View_Interface::setScriptPath + Yaf_View_Interface::getScriptPath + + - + - Yaf_View_Interface::getScriptPath - The getScriptPath purpose +Yaf_View_Interface::getScriptPath +获取模板目录 &reftitle.description; - abstract public voidYaf_View_Interface::getScriptPath + abstract public stringYaf_View_Interface::getScriptPath - - - - - &warn.undocumented.func; - + 获取查找模板时使用的目录。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +以字符串形式返回模板目录;如果尚未设置,则返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_View_Interface::getScriptPath</methodname> 示例 + +tpl_dir = $template_dir; + } + + public function assign($name, $value = null) + { + $this->vars[$name] = $value; + return true; + } + public function display($tpl, $tpl_vars = null) + { + echo $this->render($tpl, $tpl_vars); + return true; + } + + public function render($tpl, $tpl_vars = null) + { + extract($this->vars); + if ($tpl_vars !== null) { + extract($tpl_vars); + } + ob_start(); + include $this->tpl_dir . "/" . $tpl; + return ob_get_clean(); + } + + public function setScriptPath($template_dir) + { + $this->tpl_dir = $template_dir; + return $this; + } + + public function getScriptPath() + { + return $this->tpl_dir; + } +} + +/* 在 bootstrap 中将自定义视图引擎挂载到 dispatcher */ +class Bootstrap extends Yaf_Bootstrap_Abstract +{ + public function _initView(Yaf_Dispatcher $dispatcher) + { + $dispatcher->setView(new MyView(APPLICATION_PATH . "/views")); + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_View_Interface::setScriptPath + Yaf_View_Interface::render + Yaf_View_Interface::display + + - + - Yaf_View_Interface::render - 渲染模板 +Yaf_View_Interface::render +渲染模板 @@ -12,14 +12,9 @@ abstract public stringYaf_View_Interface::render stringtpl - arraytpl_vars + arraytpl_varsNULL - - 渲染视图模板并返回结果 - - - &warn.undocumented.func; - + 渲染模板,并以字符串形式返回结果,而不是直接输出。 @@ -28,30 +23,97 @@ tpl - - - +模板的路径,相对于模板目录。 tpl_vars - - - +仅供该模板使用的可选变量;它们会覆盖同名的已分配变量。 - &reftitle.returnvalues; - - - +以字符串形式返回渲染结果,失败时返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_View_Interface::render</methodname> 示例 + +tpl_dir = $template_dir; + } + + public function assign($name, $value = null) + { + $this->vars[$name] = $value; + return true; + } + + public function display($tpl, $tpl_vars = null) + { + echo $this->render($tpl, $tpl_vars); + return true; + } + public function render($tpl, $tpl_vars = null) + { + extract($this->vars); + if ($tpl_vars !== null) { + extract($tpl_vars); + } + ob_start(); + include $this->tpl_dir . "/" . $tpl; + return ob_get_clean(); + } + + public function setScriptPath($template_dir) + { + $this->tpl_dir = $template_dir; + return $this; + } + + public function getScriptPath() + { + return $this->tpl_dir; + } +} + +/* 在 bootstrap 中将自定义视图引擎挂载到 dispatcher */ +class Bootstrap extends Yaf_Bootstrap_Abstract +{ + public function _initView(Yaf_Dispatcher $dispatcher) + { + $dispatcher->setView(new MyView(APPLICATION_PATH . "/views")); + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_View_Interface::display + Yaf_View_Interface::assign + Yaf_View_Interface::setScriptPath + Yaf_View_Interface::getScriptPath + + - + - Yaf_View_Interface::setScriptPath - The setScriptPath purpose +Yaf_View_Interface::setScriptPath +设置模板目录 &reftitle.description; - abstract public voidYaf_View_Interface::setScriptPath + abstract public Yaf_View_InterfaceYaf_View_Interface::setScriptPath stringtemplate_dir - - 设置模板的基目录,这通常通过 Yaf_Dispatcher 调用。 - - - &warn.undocumented.func; - + 设置查找模板时使用的目录。 @@ -27,22 +22,90 @@ template_dir - - 模板目录的绝对路径,默认的 Yaf_Dispatcher 会设置此目录为 application.directory . "/views"。 - +存放模板脚本的目录。 - &reftitle.returnvalues; - - - +返回视图实例;如果 template_dir 不是绝对路径,则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_View_Interface::setScriptPath</methodname> 示例 + +tpl_dir = $template_dir; + } + + public function assign($name, $value = null) + { + $this->vars[$name] = $value; + return true; + } + + public function display($tpl, $tpl_vars = null) + { + echo $this->render($tpl, $tpl_vars); + return true; + } + public function render($tpl, $tpl_vars = null) + { + extract($this->vars); + if ($tpl_vars !== null) { + extract($tpl_vars); + } + ob_start(); + include $this->tpl_dir . "/" . $tpl; + return ob_get_clean(); + } + + public function setScriptPath($template_dir) + { + $this->tpl_dir = $template_dir; + return $this; + } + + public function getScriptPath() + { + return $this->tpl_dir; + } +} + +/* 在 bootstrap 中将自定义视图引擎挂载到 dispatcher */ +class Bootstrap extends Yaf_Bootstrap_Abstract +{ + public function _initView(Yaf_Dispatcher $dispatcher) + { + $dispatcher->setView(new MyView(APPLICATION_PATH . "/views")); + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_View_Interface::getScriptPath + Yaf_View_Interface::render + Yaf_View_Interface::display + + +--> \ No newline at end of file diff --git a/reference/yaf/yaf_view_simple/assign.xml b/reference/yaf/yaf_view_simple/assign.xml index 57536818f..000950077 100644 --- a/reference/yaf/yaf_view_simple/assign.xml +++ b/reference/yaf/yaf_view_simple/assign.xml @@ -1,23 +1,21 @@ - - + - Yaf_View_Simple::assign - 为视图引擎分配一个模板变量 +Yaf_View_Simple::assign +为视图分配变量 &reftitle.description; public boolYaf_View_Simple::assign - stringname - mixedvalue + mixedname + mixedvalueNULL - - 为视图引擎分配一个模板变量 - + 为视图分配变量。被分配的变量在模板中可以通过其名称访问。 + 当只传入一个数组参数时,数组中的每个键值对都会被分配,键名成为变量名。 @@ -26,43 +24,35 @@ name - - 字符串或者数组 - - - 如果为字符串, 则下一个参数 $value 不能为空 - +变量在模板中可用的名称,或者是要分配的变量数组。 value - - 混合值 - +要分配的值。 - &reftitle.returnvalues; - - - +返回 &true;。 &reftitle.examples; - <function>Yaf_View_Simple::assign</function> 示例 + <methodname>Yaf_View_Simple::assign</methodname> 示例 getView()->assign("foo", "bar"); - $this->_view->assign( array( "key" => "value", "name" => "value")); + $this->_view->assign(array("key" => "value", "name" => "value")); } } ?> @@ -70,20 +60,20 @@ class IndexController extends Yaf_Controller_Abstract { - Template 示例 + 模板示例 <?php echo $foo; ?> - - - + + _tpl_vars as $name => $value) { - echo $$name; // or echo $this->_tpl_vars[$name]; + echo $$name; // or echo $this->_tpl_vars[$name]; } ?> - + ]]> @@ -94,11 +84,10 @@ class IndexController extends Yaf_Controller_Abstract { &reftitle.seealso; Yaf_View_Simple::assignRef - Yaf_View_Interface::clear - Yaf_View_Simple::__set - - - + Yaf_View_Simple::clear + Yaf_View_Simple::get + + - - + - Yaf_View_Simple::assignRef - The assignRef purpose +Yaf_View_Simple::assignRef +Yaf_View_Simple::assign 的别名 @@ -13,11 +12,9 @@ public boolYaf_View_Simple::assignRef stringname - mixedvalue + mixedvalue - - 不同于 Yaf_View_Simple::assign,这个方法传递一个引用变量给模板引擎。 - + 以引用方式为视图分配变量。与 Yaf_View_Simple::assign 不同,该值以引用方式传递,因此调用方之后对该变量的修改在模板中也可见。 @@ -26,49 +23,42 @@ name - - 字符串名,被用来传递值给模板。 - +变量在模板中可用的名称。 value - - 混合值 - +要分配的值。 - &reftitle.returnvalues; - - - +返回 &true;。 &reftitle.examples; - <function>Yaf_View_Simple::assignRef</function> 示例 + <methodname>Yaf_View_Simple::assignRef</methodname> 示例 getView()->assign("foo", $value); + $this->getView()->assignRef("foo", $value); - /* plz note that there was a bug before Yaf 2.1.4, - * which make following output "bar"; - */ - $dummy = $this->getView()->render("index/index.phtml"); - echo $value; + /* 由于变量以引用方式分配, + * 之后对 $value 的修改在模板中也可见 */ + $value = "changed"; - //prevent the auto-render - Yaf_Dispatcher::getInstance()->autoRender(FALSE); + // 阻止自动渲染 + Yaf_Dispatcher::getInstance()->autoRender(false); } } ?> @@ -76,22 +66,22 @@ class IndexController extends Yaf_Controller_Abstract { - Template 示例 + 模板示例 - <?php echo $foo; $foo = "changed"; ?> - - - + <?php echo $foo; ?> + + + ]]> &example.outputs.similar; @@ -102,10 +92,10 @@ changed &reftitle.seealso; Yaf_View_Simple::assign - Yaf_View_Simple::__set - - - + Yaf_View_Simple::clear + Yaf_View_Simple::get + + - + - Yaf_View_Simple::clear - 清除分配的值 +Yaf_View_Simple::clear +移除已分配的变量 &reftitle.description; public boolYaf_View_Simple::clear - stringname + stringnameNULL - - 清除分配的变量 - + 移除视图中已分配的变量。 + 不带参数调用时,会移除所有已分配的变量。 @@ -24,35 +23,29 @@ name - - 分配的变量名 - - - 如果为空,将会清除所有分配的变量 - +要移除的变量名;省略或传入 &null; 时,移除所有已分配的变量。 - &reftitle.returnvalues; - - - +返回 &true;。 &reftitle.examples; - <function>Yaf_View_Simple::clear</function> 示例 + <methodname>Yaf_View_Simple::clear</methodname> 示例 getView()->clear("foo")->clear("bar"); // clear "foo" and "bar" - $this->_view->clear(); //clear all assigned variables +class IndexController extends Yaf_Controller_Abstract +{ + public function indexAction() + { + $this->getView()->clear("foo")->clear("bar"); // 清除 "foo" 和 "bar" + $this->_view->clear(); // 清除所有已分配的变量 } } ?> @@ -64,12 +57,10 @@ class IndexController extends Yaf_Controller_Abstract { &reftitle.seealso; - Yaf_View_Simple::assignRef - Yaf_View_Interface::assign - Yaf_View_Simple::__set - - - + Yaf_View_Simple::assign + Yaf_View_Simple::get + + - - + - Yaf_View_Simple::__construct - Yaf_View_Simple 的构造方法 +Yaf_View_Simple::__construct +Yaf_View_Simple 的构造方法 &reftitle.description; - final public Yaf_View_Simple::__construct + publicYaf_View_Simple::__construct stringtemplate_dir - arrayoptions + arrayoptionsNULL - - - + Yaf_View_Simple 是 Yaf 开箱即用的默认视图引擎,也是唯一的内置引擎。应用启动时,Yaf_Dispatcher 会自动创建实例;只有在分发流程之外渲染模板时,才需要手动实例化。 + template_dir 参数必须指向一个已存在的、包含视图脚本的目录;它会成为视图的脚本路径,之后可以通过 Yaf_View_Simple::setScriptPath 修改。 @@ -26,37 +24,21 @@ template_dir - - 模板的基本路径,Yaf 默认为 APPLICATOIN . "/views"。 - +存放模板脚本的目录。 options - - " in your template(regardless of "short_open_tag"), - so comes a option named "short_tag", you can switch this off - to prevent use short_tag in template. - ]]> - +以数组形式传递的可选视图配置项。该参数为自定义视图引擎实现预留;内置引擎会接受但不会使用它。 - - &reftitle.examples; @@ -65,16 +47,24 @@ false //doesn't allow use short tag in template - )); +define("TEMPLATE_DIRECTORY", APPLICATION_PATH . '/views'); +$view = new Yaf_View_Simple(TEMPLATE_DIRECTORY); +$view->assign("name", "world"); +echo $view->render("greeting.phtml"); ?> ]]> + + &reftitle.seealso; + + Yaf_View_Simple::render + Yaf_View_Simple::display + Yaf_View_Simple::setScriptPath + + - + - Yaf_View_Simple::display - 渲染一个视图模板, 并直接输出给请求端 +Yaf_View_Simple::display +渲染模板并将结果存入响应 @@ -12,11 +12,12 @@ public boolYaf_View_Simple::display stringtpl - arraytpl_vars + arrayvarsNULL - - 渲染视图模板, 并直接输出给请求端。 - + 渲染模板,并将结果追加到 Yaf_Response_Abstract 的主体中。 + + Yaf_View_Simple::render 不同,结果不会返回,而是存入响应对象,由 Yaf_Application 在输出响应时发送。 + @@ -25,30 +26,67 @@ tpl - - - +模板的路径,相对于 Yaf_View_Simple::setScriptPathapplication.view.directory 所设置的模板目录。 - tpl_vars + vars - - - +仅供该模板使用的可选变量;它们会覆盖同名的已分配变量。 - &reftitle.returnvalues; - - - +成功时返回 &true;,失败时返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_View_Simple::display</methodname> 示例 + +getView()->assign("title", "My Homepage"); + + /* 渲染 index/index.phtml 并将结果 + * 存入响应主体 */ + $this->getView()->display("index/index.phtml"); + return false; // 已自行渲染,跳过自动渲染 + } +} +?> +]]> + + + + 模板示例 + + + + <?php echo $title; ?> + + +]]> + + + + + + &reftitle.seealso; + + Yaf_View_Simple::render + Yaf_View_Simple::assign + + - + - Yaf_View_Simple::eval - 渲染模板 +Yaf_View_Simple::eval +渲染模板字符串 @@ -12,11 +12,12 @@ public stringYaf_View_Simple::eval stringtpl_content - arraytpl_vars + arrayvarsNULL - - 渲染一个字符串模板,然后返回结果。 - + 渲染以字符串形式给出的模板,并返回结果。 + + 由于不涉及模板文件,因此不会查找模板目录。 + @@ -25,30 +26,60 @@ tpl_content - - 字符串模板 - +以字符串形式给出的模板内容。 - tpl_vars + vars - - - +仅供本次渲染使用的可选变量;它们会覆盖同名的已分配变量。 - &reftitle.returnvalues; - - - +以字符串形式返回渲染结果,失败时返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_View_Simple::eval</methodname> 示例 + +"; + + /* 渲染模板字符串,不触碰文件系统 */ + $html = $this->getView()->eval($template, array("title" => "Breaking News")); + $this->getResponse()->setBody($html); + return false; // 跳过自动渲染 + } +} +?> +]]> + + &example.outputs.similar; + +Breaking News]]> + + + + + + &reftitle.seealso; + + Yaf_View_Simple::render + Yaf_View_Simple::display + + - + - Yaf_View_Simple::__get - 获取视图引擎的一个模板变量值 +Yaf_View_Simple::get +获取已分配的变量 &reftitle.description; - public voidYaf_View_Simple::__get - stringname + public mixedYaf_View_Simple::get + stringnameNULL - - 获取视图引擎的一个模板变量值 - - - 从 2.1.11 以后,参数可以为空 - - - + 获取先前分配给视图的变量。 + 不带参数调用时,返回所有已分配的变量。 @@ -29,25 +23,56 @@ name - - 分配的变量名 - - - 如果为空,所有传递的变量都会被返回 - +要获取的变量名;省略或传入 &null; 时,获取所有已分配的变量。 - &reftitle.returnvalues; - - - +返回 name 所对应的值;如果不存在该名称的变量,则返回 &null;。不带参数调用时,返回包含所有已分配变量的数组。 + + &reftitle.examples; + + <methodname>Yaf_View_Simple::get</methodname> 示例 + +getView(); + $view->assign("foo", "bar"); + var_dump($view->get("foo")); + var_dump($view->get()); // 所有已分配的变量 + } +} +?> +]]> + + &example.outputs.similar; + + + string(3) "bar" +}]]> + + + + + + &reftitle.seealso; + + Yaf_View_Simple::assign + Yaf_View_Simple::clear + + - + - Yaf_View_Simple::getScriptPath - 获取模板目录 +Yaf_View_Simple::getScriptPath +获取模板目录 @@ -13,24 +13,51 @@ public stringYaf_View_Simple::getScriptPath - - - + 获取查找模板时使用的目录。 &reftitle.parameters; &no.function.parameters; - &reftitle.returnvalues; - - - +以字符串形式返回模板目录;如果尚未设置,则返回 &null;。 + + &reftitle.examples; + + <methodname>Yaf_View_Simple::getScriptPath</methodname> 示例 + +getView()->getScriptPath(); + } +} +?> +]]> + + &example.outputs.similar; + + + + + + + &reftitle.seealso; + + Yaf_View_Simple::setScriptPath + + - + - Yaf_View_Simple::__isset - The __isset purpose +Yaf_View_Simple::__isset +检查变量是否已赋值 &reftitle.description; - public voidYaf_View_Simple::__isset + public boolYaf_View_Simple::__isset stringname - - - + 检查一个变量是否已赋值给视图。当对视图对象使用 isset() 时会调用此方法。 @@ -24,22 +22,54 @@ name - - - +要检查的变量名。 - &reftitle.returnvalues; - - - +如果在 name 下赋值了变量则返回 &true;,否则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_View_Simple::__isset</methodname> 示例 + +getView(); + $view->assign("title", "Welcome"); + var_dump(isset($view->title)); + var_dump(isset($view->unknown)); + } +} +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_View_Simple::assign + Yaf_View_Simple::get + Yaf_View_Simple::clear + + - + - Yaf_View_Simple::render - 渲染模板 +Yaf_View_Simple::render +渲染模板 @@ -12,11 +12,12 @@ public stringYaf_View_Simple::render stringtpl - arraytpl_vars + arrayvarsNULL - - 渲染模板并返回结果 - + 渲染模板并将结果作为字符串返回。模板被当作普通的 PHP 脚本来包含,因此其中的任何 PHP 代码都会执行,已赋值的变量也可以按各自的名称使用。 + + Yaf_View_Simple::display 不同,渲染结果会被返回,而不是追加到 Yaf_Response_Abstract 的响应体中。 + @@ -25,30 +26,72 @@ tpl - - - +模板的路径,相对于 Yaf_View_Simple::setScriptPathapplication.view.directory 所设置的模板目录。 - tpl_vars + vars - - - +本次渲染可选赋值的变量,它们会覆盖同名的已赋值变量。 - &reftitle.returnvalues; - - - +返回渲染结果的字符串,失败时返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_View_Simple::render</methodname> 示例 + +getView()->render("product/detail.phtml", array( + "name" => "Yaf in Action", + "price" => "29.90", + )); + $this->getResponse()->setBody($html); + return false; // 跳过自动渲染 + } +} +?> +]]> + + + + 模板示例 + + +

    Price: EUR

    +]]> +
    + &example.outputs.similar; + +Yaf in Action +

    Price: 29.90 EUR

    ]]> +
    +
    +
    + + + &reftitle.seealso; + + Yaf_View_Simple::display + Yaf_View_Simple::eval + Yaf_View_Simple::assign + +
    - + - Yaf_View_Simple::__set - 为视图引擎分配一个模板变量 +Yaf_View_Simple::__set +通过属性写入来分配变量 @@ -14,9 +14,7 @@ stringname mixedvalue - - 这是一个更简单并且用来替代 Yaf_View_Simple::assign 的方法 - + 为视图分配一个变量。当对视图对象的属性赋值时会调用此方法,其行为与 Yaf_View_Simple::assign 相同。 @@ -25,39 +23,34 @@ name - - 一个字符串值的名字 - +模板中可用的变量名。 value - - Mixed value. - +要赋的值。 - &reftitle.returnvalues; - - - +没有返回值。 &reftitle.examples; - <function>Yaf_View_Simple::__set</function> 示例 + <methodname>Yaf_View_Simple::__set</methodname> 示例 getView()->foo = "bar"; // same as assign("foo", "bar"); +class IndexController extends Yaf_Controller_Abstract +{ + public function indexAction() + { + $this->getView()->foo = "bar"; // 与 assign("foo", "bar") 相同 } } ?> @@ -69,11 +62,10 @@ class IndexController extends Yaf_Controller_Abstract { &reftitle.seealso; - Yaf_View_Simple::assignRef - Yaf_View_Interface::assign - - - + Yaf_View_Simple::assign + Yaf_View_Simple::get + + - + - Yaf_View_Simple::setScriptPath - 设置模板的目录 +Yaf_View_Simple::setScriptPath +设置模板目录 &reftitle.description; - public boolYaf_View_Simple::setScriptPath + public Yaf_View_SimpleYaf_View_Simple::setScriptPath stringtemplate_dir - - - + 设置查找模板的目录。 @@ -24,22 +22,47 @@ template_dir - - - +存放模板脚本的目录。 - &reftitle.returnvalues; - - - +返回视图实例,如果 template_dir 不是绝对路径则返回 &false;。 + + &reftitle.examples; + + <methodname>Yaf_View_Simple::setScriptPath</methodname> 示例 + +getView()->setScriptPath(APPLICATION_PATH . "/modules/admin/views"); + + $this->getView()->display("dashboard/index.phtml"); + return false; // 已自行渲染,跳过自动渲染 + } +} +?> +]]> + + + + + + &reftitle.seealso; + + Yaf_View_Simple::getScriptPath + +