CViewRenderer

优质
小牛编辑
131浏览
2023-12-01
所有包 | 属性 | 方法
system.web.renderers
继承abstract class CViewRenderer » CApplicationComponent » CComponent
实现IApplicationComponent, IViewRenderer
子类CPradoViewRenderer
源自1.0
版本$Id: CViewRenderer.php 3515 2011-12-28 12:29:24Z mdomba $
源码framework/web/renderers/CViewRenderer.php
CViewRenderer 是视图渲染类的基类。

一个视图是一个应用程序组件, 它渲染用自定义语法写的视图。

一旦安装一个名为viewRenderer的视图渲染组件, 正常的视图渲染过程将会被打断。 渲染器将首先解析源视图文件 然后渲染视图文件。

解析结果被保存为临时文件 它可能存储在runtime目录或和源视图文件相同的目录。

公共属性

隐藏继承属性

属性类型描述定义在
behaviorsarray这个应用组件附加的行为。 这此行为将在应用组件调用init时附加在应用组件上。 请参照CModel::behaviors如何指定此属性值。CApplicationComponent
fileExtensionstring视图文件的扩展名.CViewRenderer
filePermissioninteger解析后生成的临时目录和临时文件的权限。 默认为0755 (owner rwx, group rx and others rx).CViewRenderer
isInitializedboolean检查应用组件是否已经初始化。CApplicationComponent
useRuntimePathboolean是否将解析的结果保存在应用程序的runtime目录。 默认为true。 如果设置为false,解析结果将以文件形式保存在和源视图文件相同的目录下 文件名将会是源视图文件名加上字母c。CViewRenderer

公共方法

隐藏继承方法

方法描述定义在
__call()如果类中没有调的方法名,则调用这个方法。CComponent
__get()返回一个属性值、一个事件处理程序列表或一个行为名称。CComponent
__isset()检查一个属性是否为null。CComponent
__set()设置一个组件的属性值。CComponent
__unset()设置一个组件的属性为null。CComponent
asa()返回这个名字的行为对象。CComponent
attachBehavior()附加一个行为到组件。CComponent
attachBehaviors()附加一个行为列表到组件。CComponent
attachEventHandler()为事件附加一个事件处理程序。CComponent
canGetProperty()确定属性是否可读。CComponent
canSetProperty()确定属性是否可写。CComponent
detachBehavior()从组件中分离一个行为。CComponent
detachBehaviors()从组件中分离所有行为。CComponent
detachEventHandler()分离一个存在的事件处理程序。CComponent
disableBehavior()禁用一个附加行为。CComponent
disableBehaviors()禁用组件附加的所有行为。CComponent
enableBehavior()启用一个附加行为。CComponent
enableBehaviors()启用组件附加的所有行为。CComponent
evaluateExpression()计算一个PHP表达式,或根据组件上下文执行回调。CComponent
getEventHandlers()返回一个事件的附加处理程序列表。CComponent
getIsInitialized()检查应用组件是否已经初始化。CApplicationComponent
hasEvent()确定一个事件是否定义。CComponent
hasEventHandler()检查事件是否有附加的处理程序。CComponent
hasProperty()确定属性是否被定义。CComponent
init()初始化应用组件。CApplicationComponent
raiseEvent()发起一个事件。CComponent
renderFile()渲染一个视图文件。CViewRenderer

受保护方法

隐藏继承方法

方法描述定义在
generateViewFile()解析源视图文件,保存结果到另一个文件。CViewRenderer
getViewFile()生成结果视图文件的路径。CViewRenderer

属性详细

fileExtension 属性 public string $fileExtension;

视图文件的扩展名. 默认为'.php'.

filePermission 属性 public integer $filePermission;

解析后生成的临时目录和临时文件的权限。 默认为0755 (owner rwx, group rx and others rx).

useRuntimePath 属性 public boolean $useRuntimePath;

是否将解析的结果保存在应用程序的runtime目录。 默认为true。 如果设置为false,解析结果将以文件形式保存在和源视图文件相同的目录下 文件名将会是源视图文件名加上字母c。

方法详细

generateViewFile() 方法
abstract protected void generateViewFile(string $sourceFile, string $viewFile)
$sourceFilestring源视图文件路径
$viewFilestring作为结果的视图文件路径
源码: framework/web/renderers/CViewRenderer.php#55 (显示) abstractprotectedfunctiongenerateViewFile($sourceFile,$viewFile);

解析源视图文件,保存结果到另一个文件。

getViewFile() 方法
protected string getViewFile(string $file)
$filestring源视图文件路径
{return}string结果视图文件路径
源码: framework/web/renderers/CViewRenderer.php#84 (显示) protectedfunctiongetViewFile($file)
{
if($this->useRuntimePath)
{
$crc=sprintf('%x',crc32(get_class($this).Yii::getVersion().dirname($file)));
$viewFile=Yii::app()->getRuntimePath().DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.$crc.DIRECTORY_SEPARATOR.basename($file);
if(!is_file($viewFile))
@mkdir(dirname($viewFile),$this->filePermission,true);
return$viewFile;
}
else
return$file.'c';
}

生成结果视图文件的路径。

renderFile() 方法
public mixed renderFile(CBaseController $context, string $sourceFile, mixed $data, boolean $return)
$contextCBaseController渲染视图文件controller或widget。
$sourceFilestring视图文件路径
$datamixed要传到视图中的数据
$returnboolean是否将渲染结果返回
{return}mixed返回渲染结果,或者当不需要渲染结果时返回null。
源码: framework/web/renderers/CViewRenderer.php#66 (显示) publicfunctionrenderFile($context,$sourceFile,$data,$return)
{
if(!is_file($sourceFile)||($file=realpath($sourceFile))===false)
thrownewCException(Yii::t('yii','Viewfile"{file}"doesnotexist.',array('{file}'=>$sourceFile)));
$viewFile=$this->getViewFile($sourceFile);
if(@filemtime($sourceFile)>@filemtime($viewFile))
{
$this->generateViewFile($sourceFile,$viewFile);
@chmod($viewFile,$this->filePermission);
}
return$context->renderInternal($viewFile,$data,$return);
}

渲染一个视图文件。 这个方法是 IViewRenderer 所必须的。