1 關注者

類別 yii\filters\PageCache

繼承關係yii\filters\PageCache » yii\base\ActionFilter » yii\base\Behavior » yii\base\BaseObject
實作介面yii\base\Configurable, yii\base\DynamicContentAwareInterface
使用 Traitsyii\base\DynamicContentAwareTrait
自版本起可用2.0
原始碼 https://github.com/yiisoft/yii2/blob/master/framework/filters/PageCache.php

PageCache 實作了整個頁面的伺服器端快取。

它是一個動作篩選器,可以添加到控制器並處理 beforeAction 事件。

要使用 PageCache,請在您的控制器類別的 behaviors() 方法中宣告它。在以下範例中,篩選器將應用於 index 動作,並快取整個頁面最多 60 秒,或直到 post 資料表中的條目計數發生變化為止。它還根據應用程式語言儲存頁面的不同版本。

public function behaviors()
{
    return [
        'pageCache' => [
            'class' => 'yii\filters\PageCache',
            'only' => ['index'],
            'duration' => 60,
            'dependency' => [
                'class' => 'yii\caching\DbDependency',
                'sql' => 'SELECT COUNT(*) FROM post',
            ],
            'variations' => [
                \Yii::$app->language,
            ]
        ],
    ];
}

公開屬性

隱藏繼承的屬性

屬性 類型 描述 定義於
$cache yii\caching\CacheInterface|array|string 快取物件或快取物件的應用程式元件 ID。 yii\filters\PageCache
$cacheCookies boolean|array 一個布林值,指示是否快取所有 Cookie,或一個 Cookie 名稱陣列,指示可以快取哪些 Cookie。 yii\filters\PageCache
$cacheHeaders boolean|array 一個布林值,指示是否快取所有 HTTP 標頭,或一個 HTTP 標頭名稱陣列(區分大小寫),指示可以快取哪些 HTTP 標頭。 yii\filters\PageCache
$dependency array|yii\caching\Dependency 快取內容所依賴的依賴項。 yii\filters\PageCache
$duration integer 資料在快取中保持有效的秒數。 yii\filters\PageCache
$dynamicPlaceholders array 佔位符列表。 yii\base\DynamicContentAwareTrait
$enabled boolean 是否啟用頁面快取。 yii\filters\PageCache
$except array 此篩選器不應套用的動作 ID 列表。 yii\base\ActionFilter
$only array 此篩選器應套用的動作 ID 列表。 yii\base\ActionFilter
$owner yii\base\Component|null 此行為的所有者 yii\base\Behavior
$variations 字串[]|字串|可呼叫 可能導致快取內容變化的因素列表。 yii\filters\PageCache
$varyByRoute boolean 是否應根據路由區分快取的內容。 yii\filters\PageCache
$view yii\base\View|null 用於快取的視圖組件。 yii\filters\PageCache

公共方法

隱藏繼承的方法

方法 描述 定義於
__call() 呼叫未定義為類別方法的具名方法。 yii\base\BaseObject
__construct() 建構子。 yii\base\BaseObject
__get() 傳回物件屬性的值。 yii\base\BaseObject
__isset() 檢查屬性是否已設定,即已定義且非 null。 yii\base\BaseObject
__set() 設定物件屬性的值。 yii\base\BaseObject
__unset() 將物件屬性設定為 null。 yii\base\BaseObject
addDynamicPlaceholder() 為動態內容新增預留位置。 yii\base\DynamicContentAwareTrait
afterAction() 此方法在動作執行完成後立即調用。 yii\base\ActionFilter
afterFilter() yii\base\ActionFilter
afterRestoreResponse() 此方法在回應還原完成後立即調用(但在回應傳送之前)。 yii\filters\PageCache
attach() 將行為物件附加到組件。 yii\base\ActionFilter
beforeAction() 此方法在動作即將執行之前調用(在所有可能的篩選器之後)。您可以覆寫此方法以對動作進行最後一刻的準備。 yii\filters\PageCache
beforeCacheResponse() 此方法在即將開始回應快取之前調用。 yii\filters\PageCache
beforeFilter() yii\base\ActionFilter
cacheResponse() 快取回應屬性。 yii\filters\PageCache
canGetProperty() 傳回一個值,指示是否可以讀取屬性。 yii\base\BaseObject
canSetProperty() 傳回一個值,指示是否可以設定屬性。 yii\base\BaseObject
className() 傳回此類別的完整限定名稱。 yii\base\BaseObject
detach() 從組件中分離行為物件。 yii\base\ActionFilter
events() 宣告 $owner 事件的事件處理器。 yii\base\Behavior
getDynamicPlaceholders() 傳回動態內容的預留位置列表。此方法在內部用於實作內容快取功能。 yii\base\DynamicContentAwareTrait
getView() yii\filters\PageCache
hasMethod() 傳回一個值,指示是否已定義方法。 yii\base\BaseObject
hasProperty() 傳回一個值,指示是否已定義屬性。 yii\base\BaseObject
init() 初始化物件。 yii\filters\PageCache
setDynamicPlaceholders() 設定動態內容的預留位置列表。此方法在內部用於實作內容快取功能。 yii\base\DynamicContentAwareTrait

受保護的方法

隱藏繼承的方法

方法 描述 定義於
calculateCacheKey() yii\filters\PageCache
getActionId() 透過將 yii\base\Action::$uniqueId 轉換為相對於模組的 ID,傳回動作 ID。 yii\base\ActionFilter
isActive() 傳回一個值,指示篩選器是否對給定的動作處於活動狀態。 yii\base\ActionFilter
restoreResponse() 從給定的資料還原回應屬性。 yii\filters\PageCache
updateDynamicContent() 將 $content 中的預留位置替換為已評估動態陳述式的結果。 yii\base\DynamicContentAwareTrait

常數

隱藏繼承的常數

常數 描述 定義於
PAGE_CACHE_VERSION 1 頁面快取版本,用於在快取資料格式變更時偵測快取值中的不相容性。 yii\filters\PageCache

屬性詳細資訊

隱藏繼承的屬性

$cache 公共屬性

快取物件或快取物件的應用程式組件 ID。在建立 PageCache 物件之後,如果您想要變更此屬性,您應該僅將其指定為快取物件。從 2.0.2 版開始,這也可以是用於建立物件的組態陣列。

$cacheCookies 公共屬性(自 2.0.4 版起可用)

一個布林值,指示是否快取所有 Cookie,或是一個 Cookie 名稱陣列,指示可以快取哪些 Cookie。快取 Cookie 時請務必小心,因為這可能會將 Cookie 中儲存的敏感或私人資料洩漏給不想要的用戶。

public boolean|array $cacheCookies false
$cacheHeaders 公共屬性(自 2.0.4 版起可用)

一個布林值,指示是否快取所有 HTTP 標頭,或是一個 HTTP 標頭名稱陣列(區分大小寫),指示可以快取哪些 HTTP 標頭。請注意,如果您的 HTTP 標頭包含敏感資訊,您應該將可以快取的標頭加入白名單。

public boolean|array $cacheHeaders true
$dependency 公共屬性

快取內容所依賴的依賴關係。這可以是 yii\caching\Dependency 物件,或是用於建立依賴關係物件的組態陣列。例如:

[
    'class' => 'yii\caching\DbDependency',
    'sql' => 'SELECT MAX(updated_at) FROM post',
]

會使輸出快取依賴於所有貼文的上次修改時間。如果任何貼文的修改時間變更,快取內容將會失效。

如果啟用 $cacheCookies$cacheHeaders,則也應啟用 yii\caching\Dependency::$reusable 以節省效能。這是因為 Cookie 和標頭目前與實際頁面內容分開儲存,導致依賴關係被評估兩次。

$duration 公共屬性

資料在快取中保持有效的秒數。使用 0 表示快取資料永遠不會過期。

public integer $duration 60
$enabled 公共屬性

是否啟用頁面快取。您可以根據特定設定使用此屬性來開啟和關閉頁面快取(例如,僅針對 GET 請求啟用頁面快取)。

public boolean $enabled true
$variations 公共屬性

可能導致快取內容變化的因素列表。每個因素都是一個字串,代表一個變化(例如,語言、GET 參數)。以下變化設定將導致根據目前的應用程式語言,以不同的版本快取內容

[
    Yii::$app->language,
]

自 2.0.48 版起,您可以提供匿名函式來產生變化。當您需要存取 User 組件時,這特別有用,該組件會在 PageCache 行為之前解析

'variations' => function() {
    return [
        Yii::$app->language,
        Yii::$app->user->id
    ];
}

可呼叫物件應傳回陣列。

$varyByRoute 公共屬性

是否應根據路由區分快取的內容。路由包含請求的控制器 ID 和動作 ID。預設為 true

public boolean $varyByRoute true
$view 公共屬性

用於快取的視圖組件。如果未設定,將會使用預設的應用程式視圖組件 yii\web\Application::$view

public yii\base\View|null $view null

方法詳細資訊

隱藏繼承的方法

__call() 公共方法

定義於: yii\base\BaseObject::__call()

呼叫未定義為類別方法的具名方法。

請勿直接呼叫此方法,因為它是 PHP 魔術方法,當調用未知方法時,它會被隱式呼叫。

public mixed __call ( $name, $params )
$name 字串

方法名稱

$params array

方法參數

return mixed

方法傳回值

throws yii\base\UnknownMethodException

當呼叫未知方法時

                public function __call($name, $params)
{
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__construct() 公共方法

定義於: yii\base\BaseObject::__construct()

建構子。

預設實作執行兩件事

  • 使用給定的組態 $config 初始化物件。
  • 呼叫 init()

如果子類別中覆寫了此方法,建議

  • 建構子的最後一個參數是組態陣列,例如此處的 $config
  • 在建構子的結尾呼叫父類別實作。
public void __construct ( $config = [] )
$config array

將用於初始化物件屬性的名稱-值對

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() 公共方法

定義於: yii\base\BaseObject::__get()

傳回物件屬性的值。

請勿直接呼叫此方法,因為它是 PHP 魔術方法,當執行 $value = $object->property; 時,它會被隱式呼叫。

另請參閱 __set()

public mixed __get ( $name )
$name 字串

屬性名稱

return mixed

屬性值

throws yii\base\UnknownPropertyException

如果屬性未定義

throws yii\base\InvalidCallException

如果屬性為唯寫

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter();
    } elseif (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() 公共方法

定義於: yii\base\BaseObject::__isset()

檢查屬性是否已設定,即已定義且非 null。

請勿直接呼叫此方法,因為它是 PHP 魔術方法,當執行 isset($object->property) 時,它會被隱式呼叫。

請注意,如果屬性未定義,將傳回 false。

另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

public boolean __isset ( $name )
$name 字串

屬性名稱或事件名稱

return boolean

具名屬性是否已設定(非 null)。

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    return false;
}

            
__set() 公共方法

定義於: yii\base\BaseObject::__set()

設定物件屬性的值。

請勿直接呼叫此方法,因為它是 PHP 魔術方法,當執行 $object->property = $value; 時,它會被隱式呼叫。

另請參閱 __get()

public void __set ( $name, $value )
$name 字串

屬性名稱或事件名稱

$value mixed

屬性值

throws yii\base\UnknownPropertyException

如果屬性未定義

throws yii\base\InvalidCallException

如果屬性為唯讀

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter($value);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    } else {
        throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
    }
}

            
__unset() 公共方法

定義於: yii\base\BaseObject::__unset()

將物件屬性設定為 null。

請勿直接呼叫此方法,因為它是 PHP 魔術方法,當執行 unset($object->property) 時,它會被隱式呼叫。

請注意,如果屬性未定義,此方法將不會執行任何操作。如果屬性為唯讀,它將會拋出例外。

另請參閱 https://php.dev.org.tw/manual/en/function.unset.php

public void __unset ( $name )
$name 字串

屬性名稱

throws yii\base\InvalidCallException

如果屬性為唯讀。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
    }
}

            
addDynamicPlaceholder() 公共方法

定義於: yii\base\DynamicContentAwareTrait::addDynamicPlaceholder()

為動態內容新增預留位置。

此方法在內部用於實作內容快取功能。

public void addDynamicPlaceholder ( $name, $statements )
$name 字串

預留位置名稱。

$statements 字串

用於產生動態內容的 PHP 陳述式。

                public function addDynamicPlaceholder($name, $statements)
{
    $this->_dynamicPlaceholders[$name] = $statements;
}

            
afterAction() 公共方法

定義於: yii\base\ActionFilter::afterAction()

此方法在動作執行完成後立即調用。

您可以覆寫此方法,以對動作執行一些後處理。

public mixed afterAction ( $action, $result )
$action yii\base\Action

剛執行的動作。

$result mixed

動作執行結果

return mixed

已處理的動作結果。

                public function afterAction($action, $result)
{
    return $result;
}

            
afterFilter() 公共方法
public void afterFilter ( $event )
$event yii\base\ActionEvent

                public function afterFilter($event)
{
    $event->result = $this->afterAction($event->action, $event->result);
    $this->owner->off(Controller::EVENT_AFTER_ACTION, [$this, 'afterFilter']);
}

            
afterRestoreResponse() 公共方法(自 2.0.11 版起可用)

此方法在回應還原完成後立即調用(但在回應傳送之前)。

您可以覆寫此方法,以在回應傳送之前執行最後一刻的準備。

public void afterRestoreResponse ( $data )
$data array|null

快取項目中儲存的額外資料陣列或 null

                public function afterRestoreResponse($data)
{
}

            
attach() 公共方法

定義於: yii\base\ActionFilter::attach()

將行為物件附加到組件。

預設實作將設定 $owner 屬性,並附加在 events() 中宣告的事件處理器。如果您覆寫此方法,請確保呼叫父類別實作。

public void attach ( $owner )
$owner yii\base\Component

要附加此行為的組件。

                public function attach($owner)
{
    $this->owner = $owner;
    $owner->on(Controller::EVENT_BEFORE_ACTION, [$this, 'beforeFilter']);
}

            
beforeAction() 公共方法

此方法在動作即將執行之前調用(在所有可能的篩選器之後)。您可以覆寫此方法以對動作進行最後一刻的準備。

public boolean beforeAction ( $action )
$action yii\base\Action

要執行的動作。

return boolean

動作是否應繼續執行。

                public function beforeAction($action)
{
    if (!$this->enabled) {
        return true;
    }
    $this->cache = Instance::ensure($this->cache, 'yii\caching\CacheInterface');
    if (is_array($this->dependency)) {
        $this->dependency = Yii::createObject($this->dependency);
    }
    $response = Yii::$app->getResponse();
    $data = $this->cache->get($this->calculateCacheKey());
    if (!is_array($data) || !isset($data['cacheVersion']) || $data['cacheVersion'] !== static::PAGE_CACHE_VERSION) {
        $this->view->pushDynamicContent($this);
        ob_start();
        ob_implicit_flush(false);
        $response->on(Response::EVENT_AFTER_SEND, [$this, 'cacheResponse']);
        Yii::debug('Valid page content is not found in the cache.', __METHOD__);
        return true;
    }
    $this->restoreResponse($response, $data);
    Yii::debug('Valid page content is found in the cache.', __METHOD__);
    return false;
}

            
beforeCacheResponse() 公共方法(自 2.0.11 版起可用)

此方法在即將開始回應快取之前調用。

您可以覆寫此方法,透過傳回 false 來取消快取,或透過傳回陣列而不是 true,將額外資料儲存在快取項目中。

public boolean|array beforeCacheResponse ( )
return boolean|array

是否快取,傳回陣列而不是 true 以儲存額外資料。

                public function beforeCacheResponse()
{
    return true;
}

            
beforeFilter() 公共方法
public void beforeFilter ( $event )
$event yii\base\ActionEvent

                public function beforeFilter($event)
{
    if (!$this->isActive($event->action)) {
        return;
    }
    $event->isValid = $this->beforeAction($event->action);
    if ($event->isValid) {
        // call afterFilter only if beforeFilter succeeds
        // beforeFilter and afterFilter should be properly nested
        $this->owner->on(Controller::EVENT_AFTER_ACTION, [$this, 'afterFilter'], null, false);
    } else {
        $event->handled = true;
    }
}

            
cacheResponse() 公共方法(自 2.0.3 版起可用)

快取回應屬性。

public void cacheResponse ( )

                public function cacheResponse()
{
    $this->view->popDynamicContent();
    $beforeCacheResponseResult = $this->beforeCacheResponse();
    if ($beforeCacheResponseResult === false) {
        echo $this->updateDynamicContent(ob_get_clean(), $this->getDynamicPlaceholders());
        return;
    }
    $response = Yii::$app->getResponse();
    $response->off(Response::EVENT_AFTER_SEND, [$this, 'cacheResponse']);
    $data = [
        'cacheVersion' => static::PAGE_CACHE_VERSION,
        'cacheData' => is_array($beforeCacheResponseResult) ? $beforeCacheResponseResult : null,
        'content' => ob_get_clean(),
    ];
    if ($data['content'] === false || $data['content'] === '') {
        return;
    }
    $data['dynamicPlaceholders'] = $this->getDynamicPlaceholders();
    foreach (['format', 'version', 'statusCode', 'statusText'] as $name) {
        $data[$name] = $response->{$name};
    }
    $this->insertResponseHeaderCollectionIntoData($response, $data);
    $this->insertResponseCookieCollectionIntoData($response, $data);
    $this->cache->set($this->calculateCacheKey(), $data, $this->duration, $this->dependency);
    $data['content'] = $this->updateDynamicContent($data['content'], $this->getDynamicPlaceholders());
    echo $data['content'];
}

            
calculateCacheKey() 受保護的方法(自 2.0.3 版起可用)

protected array calculateCacheKey ( )
return array

用於快取回應屬性的金鑰。

                protected function calculateCacheKey()
{
    $key = [__CLASS__];
    if ($this->varyByRoute) {
        $key[] = Yii::$app->requestedRoute;
    }
    if ($this->variations instanceof Closure) {
        $variations = call_user_func($this->variations, $this);
    } else {
        $variations = $this->variations;
    }
    return array_merge($key, (array) $variations);
}

            
canGetProperty() 公共方法

定義於: yii\base\BaseObject::canGetProperty()

傳回一個值,指示是否可以讀取屬性。

如果屬性可讀取,條件如下:

  • 類別具有與指定名稱關聯的 getter 方法(在這種情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數(當 $checkVars 為 true 時);

另請參閱 canSetProperty()

public boolean canGetProperty ( $name, $checkVars true )
$name 字串

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

return boolean

屬性是否可讀取

                public function canGetProperty($name, $checkVars = true)
{
    return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}

            
canSetProperty() public method

定義於: yii\base\BaseObject::canSetProperty()

傳回一個值,指示是否可以設定屬性。

屬性可寫入的條件為

  • 類別具有與指定名稱相關聯的 setter 方法 (在此情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數(當 $checkVars 為 true 時);

另請參閱 canGetProperty()

public boolean canSetProperty ( $name, $checkVars true )
$name 字串

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

return boolean

屬性是否可寫入

                public function canSetProperty($name, $checkVars = true)
{
    return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}

            
className() public static method
自 2.0.14 版本起已過時。在 PHP >=5.5 版本,請改用 ::class

定義於: yii\base\BaseObject::className()

傳回此類別的完整限定名稱。

public static string className ( )
return 字串

此類別的完整限定名稱。

                public static function className()
{
    return get_called_class();
}

            
detach() public method

定義於: yii\base\ActionFilter::detach()

從組件中分離行為物件。

預設實作會取消設定 $owner 屬性,並分離在 events() 中宣告的事件處理器。如果您覆寫此方法,請確保呼叫父類別實作。

public void detach ( )

                public function detach()
{
    if ($this->owner) {
        $this->owner->off(Controller::EVENT_BEFORE_ACTION, [$this, 'beforeFilter']);
        $this->owner->off(Controller::EVENT_AFTER_ACTION, [$this, 'afterFilter']);
        $this->owner = null;
    }
}

            
events() public method

定義於: yii\base\Behavior::events()

宣告 $owner 事件的事件處理器。

子類別可以覆寫此方法,以宣告應附加到 $owner 元件事件的 PHP 回呼。

當行為附加到擁有者時,回呼將附加到 $owner 的事件;當行為從元件中分離時,它們將從事件中分離。

回呼可以是以下任何一種

  • 此行為中的方法:'handleClick',等同於 [$this, 'handleClick']
  • 物件方法:[$object, 'handleClick']
  • 靜態方法:['Page', 'handleClick']
  • 匿名函式:function ($event) { ... }

以下是一個範例

[
    Model::EVENT_BEFORE_VALIDATE => 'myBeforeValidate',
    Model::EVENT_AFTER_VALIDATE => 'myAfterValidate',
]
public array events ( )
return array

事件 (陣列鍵) 和相應的事件處理器方法 (陣列值)。

                public function events()
{
    return [];
}

            
getActionId() protected method (available since version 2.0.7)

定義於: yii\base\ActionFilter::getActionId()

透過將 yii\base\Action::$uniqueId 轉換為相對於模組的 ID,傳回動作 ID。

protected string getActionId ( $action )
$action yii\base\Action

                protected function getActionId($action)
{
    if ($this->owner instanceof Module) {
        $mid = $this->owner->getUniqueId();
        $id = $action->getUniqueId();
        if ($mid !== '' && strpos($id, $mid) === 0) {
            $id = substr($id, strlen($mid) + 1);
        }
    } else {
        $id = $action->id;
    }
    return $id;
}

            
getDynamicPlaceholders() public method

定義於: yii\base\DynamicContentAwareTrait::getDynamicPlaceholders()

傳回動態內容的預留位置列表。此方法在內部用於實作內容快取功能。

public array getDynamicPlaceholders ( )
return array

佔位符列表。

                public function getDynamicPlaceholders()
{
    return $this->_dynamicPlaceholders;
}

            
getView() public method

public void getView ( )

                public function getView()
{
    return $this->view;
}

            
hasMethod() public method

定義於: yii\base\BaseObject::hasMethod()

傳回一個值,指示是否已定義方法。

預設實作是對 php 函式 method_exists() 的呼叫。當您實作了 php 魔術方法 __call() 時,您可以覆寫此方法。

public boolean hasMethod ( $name )
$name 字串

方法名稱

return boolean

方法是否已定義

                public function hasMethod($name)
{
    return method_exists($this, $name);
}

            
hasProperty() public method

定義於: yii\base\BaseObject::hasProperty()

傳回一個值,指示是否已定義屬性。

屬性已定義的條件為

  • 類別具有與指定名稱相關聯的 getter 或 setter 方法 (在此情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數(當 $checkVars 為 true 時);

另請參閱

public boolean hasProperty ( $name, $checkVars true )
$name 字串

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

return boolean

屬性是否已定義

                public function hasProperty($name, $checkVars = true)
{
    return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false);
}

            
init() public method

初始化物件。

在物件以給定配置初始化後,此方法會在建構子結束時被調用。

public void init ( )

                public function init()
{
    parent::init();
    if ($this->view === null) {
        $this->view = Yii::$app->getView();
    }
}

            
isActive() protected method

定義於: yii\base\ActionFilter::isActive()

傳回一個值,指示篩選器是否對給定的動作處於活動狀態。

protected boolean isActive ( $action )
$action yii\base\Action

正在被過濾的動作

return boolean

篩選器對於給定的動作是否為活動狀態。

                protected function isActive($action)
{
    $id = $this->getActionId($action);
    if (empty($this->only)) {
        $onlyMatch = true;
    } else {
        $onlyMatch = false;
        foreach ($this->only as $pattern) {
            if (StringHelper::matchWildcard($pattern, $id)) {
                $onlyMatch = true;
                break;
            }
        }
    }
    $exceptMatch = false;
    foreach ($this->except as $pattern) {
        if (StringHelper::matchWildcard($pattern, $id)) {
            $exceptMatch = true;
            break;
        }
    }
    return !$exceptMatch && $onlyMatch;
}

            
restoreResponse() protected method (available since version 2.0.3)

從給定的資料還原回應屬性。

protected void restoreResponse ( $response, $data )
$response yii\web\Response

要還原的回應。

$data array

回應屬性資料。

                protected function restoreResponse($response, $data)
{
    foreach (['format', 'version', 'statusCode', 'statusText', 'content'] as $name) {
        $response->{$name} = $data[$name];
    }
    foreach (['headers', 'cookies'] as $name) {
        if (isset($data[$name]) && is_array($data[$name])) {
            $response->{$name}->fromArray(array_merge($data[$name], $response->{$name}->toArray()));
        }
    }
    if (!empty($data['dynamicPlaceholders']) && is_array($data['dynamicPlaceholders'])) {
        $response->content = $this->updateDynamicContent($response->content, $data['dynamicPlaceholders'], true);
    }
    $this->afterRestoreResponse(isset($data['cacheData']) ? $data['cacheData'] : null);
}

            
setDynamicPlaceholders() public method

定義於: yii\base\DynamicContentAwareTrait::setDynamicPlaceholders()

設定動態內容的預留位置列表。此方法在內部用於實作內容快取功能。

public void setDynamicPlaceholders ( $placeholders )
$placeholders array

佔位符列表。

                public function setDynamicPlaceholders($placeholders)
{
    $this->_dynamicPlaceholders = $placeholders;
}

            
updateDynamicContent() protected method

定義於: yii\base\DynamicContentAwareTrait::updateDynamicContent()

將 $content 中的預留位置替換為已評估動態陳述式的結果。

protected string updateDynamicContent ( $content, $placeholders, $isRestoredFromCache false )
$content 字串

要解析的內容。

$placeholders 字串[]

佔位符及其值。

$isRestoredFromCache boolean

內容是否將從快取還原。

return 字串

最終內容。

                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;
}