Rup*_*tel 1 php zend-framework this
对于我使用OOP的所有练习,我从未在类定义之外使用过$ this.
在zendframework中,我们在视图模板文件中使用$ this,显然它不是类定义的范围.我想知道它是如何实现的?我google了很多但没有运气.
我想知道zendframework如何使用$ this呈现它的视图文件的机制.
rai*_*7ow 10
在视图中,脚本文件(.phtml1)$this引用当前使用的Zend_View类实例- 命令呈现此特定脚本的实例.引用文档:
这是
[a view script]一个像其他任何PHP脚本一样的例外情况:它在Zend_View实例的范围内执行,这意味着对$ this的引用指向Zend_View实例属性和方法.(控制器分配给实例的变量是Zend_View实例的公共属性).
这就是它的完成方式:当你的控制器调用(显式或隐式)render方法(在Zend_View_Abstract类中定义)时,最后执行以下方法(在Zend_View类中定义):
/**
* Includes the view script in a scope with only public $this variables.
*
* @param string The view script to execute.
*/
protected function _run()
{
if ($this->_useViewStream && $this->useStreamWrapper()) {
include 'zend.view://' . func_get_arg(0);
} else {
include func_get_arg(0);
}
}
Run Code Online (Sandbox Code Playgroud)
... where func_get_arg(0)指的是包含脚本的完整文件名(路径+名称).