0 follower

Final Class Yiisoft\Yii\Widgets\FragmentCache

InheritanceYiisoft\Yii\Widgets\FragmentCache » Yiisoft\Widget\Widget

FragmentCache caches a fragment of content.

See also:

  • \Yiisoft\View\Cache\CachedContent
  • \Yiisoft\View\Cache\DynamicContent Example of use: `php $dynamicContent = new Yiisoft\View\Cache\DynamicContent('dynamic-id', static function (array $parameters): string { return strtoupper("{$parameters['a']} - {$parameters['b']}"); }, ['a' => 'string-a', 'b' => 'string-b']); FragmentCache::widget() ->id('cache-id') ->ttl(30) ->dynamicContents($dynamicContent) ->begin(); echo 'Content to be cached ...'; echo $dynamicContent->placeholder(); echo 'Content to be cached ...'; FragmentCache::end(); `

Public Methods

Hide inherited methods

Method Description Defined By
__construct() Yiisoft\Yii\Widgets\FragmentCache
begin() Starts recording a fragment cache. Yiisoft\Yii\Widgets\FragmentCache
dependency() Returns a new instance with the specified dependency. Yiisoft\Yii\Widgets\FragmentCache
dynamicContents() Returns a new instance with the specified dynamic contents. Yiisoft\Yii\Widgets\FragmentCache
id() Returns a new instance with the specified Widget ID. Yiisoft\Yii\Widgets\FragmentCache
render() Marks the end of content to be cached. Yiisoft\Yii\Widgets\FragmentCache
ttl() Returns a new instance with the specified TTL. Yiisoft\Yii\Widgets\FragmentCache
variations() Returns a new instance with the specified variations. Yiisoft\Yii\Widgets\FragmentCache

Method Details

Hide inherited methods

__construct() public method

public mixed __construct ( \Yiisoft\Cache\CacheInterface $cache )
$cache \Yiisoft\Cache\CacheInterface

                public function __construct(private CacheInterface $cache)
{
}

            
begin() public method

Starts recording a fragment cache.

public string|null begin ( )

                public function begin(): ?string
{
    parent::begin();
    ob_start();
    return null;
}

            
dependency() public method

Returns a new instance with the specified dependency.

public self dependency ( \Yiisoft\Cache\Dependency\Dependency $value )
$value \Yiisoft\Cache\Dependency\Dependency

The dependency that the cached content depends on.

This can be either a {@see \Yiisoft\Cache\Dependency\Dependency} object or a configuration array for creating the dependency object.

Would make the output cache depends on the last modified time of all posts. If any post has its modification time changed, the cached content would be invalidated.

                public function dependency(Dependency $value): self
{
    $new = clone $this;
    $new->dependency = $value;
    return $new;
}

            
dynamicContents() public method

Returns a new instance with the specified dynamic contents.

public self dynamicContents ( \Yiisoft\View\Cache\DynamicContent $value )
$value \Yiisoft\View\Cache\DynamicContent

The dynamic content instances.

                public function dynamicContents(DynamicContent ...$value): self
{
    $new = clone $this;
    foreach ($value as $dynamicContent) {
        $new->dynamicContents[$dynamicContent->id()] = $dynamicContent;
    }
    return $new;
}

            
id() public method

Returns a new instance with the specified Widget ID.

public self id ( string $value )
$value string

The unique identifier of the cache fragment.

                public function id(string $value): self
{
    $new = clone $this;
    $new->id = $value;
    return $new;
}

            
render() public method

Marks the end of content to be cached.

Content displayed before this method call and after {@see \Yiisoft\Yii\Widgets\begin()} will be captured and saved in cache.

This method does nothing if valid content is already found in cache.

public string render ( )
return string

The result of widget execution to be outputted.

                public function render(): string
{
    if ($this->id === '') {
        ob_end_clean();
        throw new RuntimeException('You must assign the "id" using the "id()" setter.');
    }
    $cachedContent = new CachedContent($this->id, $this->cache, $this->dynamicContents, $this->variations);
    $content = $cachedContent->get();
    if ($content !== null) {
        ob_end_clean();
        return $content;
    }
    $content = ob_get_clean();
    if ($content === false || $content === '') {
        return '';
    }
    return $cachedContent->cache($content, $this->ttl, $this->dependency);
}

            
ttl() public method

Returns a new instance with the specified TTL.

public self ttl ( integer $value )
$value integer

The number of seconds that the data can remain valid in cache.

                public function ttl(int $value): self
{
    $new = clone $this;
    $new->ttl = $value;
    return $new;
}

            
variations() public method

Returns a new instance with the specified variations.

public self variations ( string $value )
$value string

The factors that would cause the variation of the content being cached.

Each factor is a string representing a variation (e.g. the language, a GET parameter). The following variation setting will cause the content to be cached in different versions according to the current application language:

$fragmentCache->variations('en');

                public function variations(string ...$value): self
{
    $new = clone $this;
    $new->variations = $value;
    return $new;
}