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