Trait yii\base\DynamicContentAwareTrait
实现于 | yii\filters\PageCache, yii\widgets\FragmentCache |
---|---|
版本支持 | 2.0.14 |
源代码 | https://github.com/yiisoft/yii2/blob/master/framework/base/DynamicContentAwareTrait.php |
DynamicContentAwareTrait 为支持 yii\base\View 动态内容功能的类实现通用方法。
公共方法
方法 | 描述 | 定义于 |
---|---|---|
addDynamicPlaceholder() | 为动态内容添加占位符。 | yii\base\DynamicContentAwareTrait |
getDynamicPlaceholders() | 返回动态内容的占位符列表。此方法在内部使用以实现内容缓存功能。 | yii\base\DynamicContentAwareTrait |
setDynamicPlaceholders() | 设置动态内容的占位符列表。此方法在内部使用以实现内容缓存功能。 | yii\base\DynamicContentAwareTrait |
受保护方法
方法 | 描述 | 定义于 |
---|---|---|
getView() | 返回可用于使用动态内容渲染视图或视图文件的视图对象。 | yii\base\DynamicContentAwareTrait |
updateDynamicContent() | 用已评估的动态语句的结果替换 $content 中的占位符。 | yii\base\DynamicContentAwareTrait |
方法详细说明
为动态内容添加占位符。
此方法在内部使用以实现内容缓存功能。
public void addDynamicPlaceholder ( $name, $statements ) | ||
$name | string |
占位符名称。 |
$statements | string |
用于生成动态内容的 PHP 语句。 |
public function addDynamicPlaceholder($name, $statements)
{
$this->_dynamicPlaceholders[$name] = $statements;
}
返回动态内容的占位符列表。此方法在内部使用以实现内容缓存功能。
public array getDynamicPlaceholders ( ) | ||
返回 | array |
占位符列表。 |
---|
public function getDynamicPlaceholders()
{
return $this->_dynamicPlaceholders;
}
返回可用于使用动态内容渲染视图或视图文件的视图对象。
protected abstract yii\base\View getView ( ) | ||
返回 | yii\base\View |
可用于渲染视图或视图文件的视图对象。 |
---|
abstract protected function getView();
设置动态内容的占位符列表。此方法在内部使用以实现内容缓存功能。
public void setDynamicPlaceholders ( $placeholders ) | ||
$placeholders | array |
占位符列表。 |
public function setDynamicPlaceholders($placeholders)
{
$this->_dynamicPlaceholders = $placeholders;
}
用已评估的动态语句的结果替换 $content 中的占位符。
protected string updateDynamicContent ( $content, $placeholders, = false ) | ||
$content | string |
要解析的内容。 |
$placeholders | string[] |
占位符及其值。 |
$isRestoredFromCache | boolean |
内容是否将从缓存中恢复。 |
返回 | string |
最终内容。 |
---|
protected function updateDynamicContent($content, $placeholders, $isRestoredFromCache = false)
{
if (empty($placeholders) || !is_array($placeholders)) {
return $content;
}
if (count($this->getView()->getDynamicContents()) === 0) {
// outermost cache: replace placeholder with dynamic content
foreach ($placeholders as $name => $statements) {
$placeholders[$name] = $this->getView()->evaluateDynamicContent($statements);
}
$content = strtr($content, $placeholders);
}
if ($isRestoredFromCache) {
$view = $this->getView();
foreach ($placeholders as $name => $statements) {
$view->addDynamicPlaceholder($name, $statements);
}
}
return $content;
}
注册 或 登录 以发表评论。