Skip to content

zalatov/runtime-cache-trait

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

RuntimeCacheTrait

  1. Не требуется указание лишнего private/protected атрибута.
  2. Не дублируется аннотация/документация и к атрибуту, и к методу.
  3. Инкапсулирование логики методом - есть уверенность, что в других местах атрибут ничего не изменит.

Обычное использование

<?php
class Product {
    private $images;

    public function getImages(): array {
        if (null === $this->images) {
            $this->images = [new Image];
        }

        return $this->images;
    }
}

Через RuntimeCacheTrait

<?php
class Product {
    use RuntimeCacheTrait;

    public function getImages(): array {
        return $this->objectRuntimeCache(__METHOD__, function() {
            return [new Image];
        });
    }
}

Один экземпляр объекта/модели

<?php
class Product extends \yii\db\ActiveRecord {
    use RuntimeCacheTrait;

    public static function getModel(string $id): ?self {
        return static::globalRuntimeCache([__METHOD__, $id], function() use ($id) {
            return static::findOne($Id);
        });
    }
}

About

Trait for PHP runtime caching

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages