Home >Backend Development >PHP Tutorial >YII框架这段代码是啥意思?是moudles里面view中default中的index.SegmentFault

YII框架这段代码是啥意思?是moudles里面view中default中的index.SegmentFault

WBOY
WBOYOriginal
2016-06-06 20:45:481062browse

<code class="lang-php"><?php /* @var $this DefaultController 
 
  $this是从哪来的?
 
 
 
 */

$this->breadcrumbs=array(
    $this->module->id,
);
?>


<h1>
<?php echo $this->uniqueId . '/' . $this->action->id; ?></h1>





<p>
This is the view content for action "<?php echo $this->action->id; ?>".
The action belongs to the controller "<?php echo get_class($this); ?>"
in the "<?php echo $this->module->id; ?>" module.
</p>




<p>
You may customize this page by editing <tt><?php echo __FILE__; ?></tt>
</p>


</code>

我想知道这个$this是哪来的?这也没有类啊!

回复内容:

<code class="lang-php"><?php /* @var $this DefaultController 
 
  $this是从哪来的?
 
 
 
 */

$this->breadcrumbs=array(
    $this->module->id,
);
?>


<h1>
<?php echo $this->uniqueId . '/' . $this->action->id; ?></h1>





<p>
This is the view content for action "<?php echo $this->action->id; ?>".
The action belongs to the controller "<?php echo get_class($this); ?>"
in the "<?php echo $this->module->id; ?>" module.
</p>




<p>
You may customize this page by editing <tt><?php echo __FILE__; ?></tt>
</p>


</code>

我想知道这个$this是哪来的?这也没有类啊!

注释里面不是写了吗?

<code>$this DefaultController 
</code>

Yii view 里面的$this 是指当前controller,具体过程去看conroller的render方法.
因为是用Yii自身的renderer,所以调用的是ViewRenderer类的renderFile方法,
这方法接收一个$context参数,其实传的就是当前controller的实例对象,
然后再调这个controller的renderInternal方法,这个方法把view文件require进来了,
所以在view的$this其实是把当前controller传进来,然后调用传进来的controller的自身方法,把view文件require进来.

debug_print_backtrace 一看就知道

我心里有答案,但没实际用过YII,所以就只说方法了

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn