$这是如何在zend框架中的.phtml文件中工作的?

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)指的是包含脚本的完整文件名(路径+名称).