Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基本的Yii概念:美元在哪里定义?_Php_Yii - Fatal编程技术网

Php 基本的Yii概念:美元在哪里定义?

Php 基本的Yii概念:美元在哪里定义?,php,yii,Php,Yii,我正在看一看Yii框架关于博客应用程序的教程。我正在理解的过程中,但我不理解一个主要组件:它位于特定的.php视图的开头 <?php $this->breadcrumbs=array( 'Manage Posts', ); ?> 我只是想知道,$这个是从哪里来的。据我所知,$this只能在类的范围内使用。但是,我在这里没有看到实现类,所以有人能告诉我Yii是如何为我实现的吗?我很确定Yii会将模板编译成类,所以在运行时您确实有一个类。查看\uuuuuuuuuuu文

我正在看一看Yii框架关于博客应用程序的教程。我正在理解的过程中,但我不理解一个主要组件:它位于特定的.php视图的开头

<?php
$this->breadcrumbs=array(
    'Manage Posts',
);
?>


我只是想知道,
$这个
是从哪里来的。据我所知,
$this
只能在类的范围内使用。但是,我在这里没有看到实现类,所以有人能告诉我Yii是如何为我实现的吗?

我很确定Yii会将模板编译成类,所以在运行时您确实有一个类。查看
\uuuuuuuuuuu文件
获取类($this)
了解详细信息。

如果此模板只是
require
d在方法中,它实际上进入了对象范围。因此,
this
代表渲染temlate的某个视图对象。

$this
这里指的是当前的控制器类。如果您在components/controller.php中看到控制器,您还将看到一个
$breadCrumbs=array()。见:

在视图脚本中,我们可以使用$this访问控制器实例。因此,我们可以通过在视图中计算$this->propertyName来引入控制器的任何属性

控制器最终使用渲染视图。如果您看到该函数的源代码,您将看到:

由于使用了require,$,因此在包含代码时可以使用:

包含文件时,它包含的代码将继承包含文件所在行的变量范围。从该点开始,调用文件中该行可用的任何变量都将在被调用文件中可用。但是,包含文件中定义的所有函数和类都具有全局作用域


因此,当我们做
$this->render('view')
视图
将访问$

我如何知道文件是否为模板?这是我目前了解的,很久没有用php编程,所以不知道我是否错过了一个非常好的解释!我刚刚开始学习PHP,我不确定该使用哪个PHP框架。。。你最终为什么选择和Yii一起工作?
public function renderInternal($_viewFile_,$_data_=null,$_return_=false)
{
    // we use special variable names here to avoid conflict when extracting data
    if(is_array($_data_))
        extract($_data_,EXTR_PREFIX_SAME,'data');
    else
        $data=$_data_;
    if($_return_)
    {
        ob_start();
        ob_implicit_flush(false);
        require($_viewFile_);
        return ob_get_clean();
    }
    else
        require($_viewFile_);
}