#symfony

Подключаем компонент:

composer require symfony/cache

Как сделать простой кеш в файлах?

require_once __DIR__ . '/vendor/autoload.php';

// создаём объект для управления кешом в файлах
$cache = new FilesystemAdapter(
    // поддиректория в папке кеша
    'mySubDirectoryName',

    // время жизни кеша по умолчанию
    86400,

    // путь к папке кеша 
    __DIR__ . '/cache'
);

// ключ кеша
$cacheKey = 'testKey1';

// получаем по этому ключу данные из кеша
$value = $cache->get(
    $cacheKey,

    // если актуального кеша нет, то выполнится этот callable: 
    function () {
        // тут мы получаем данные без кеша,
        // и отдаём их в return,
        // после этого данные сохранятся в кеш 
        $value = rand();

        return $value;
    }
);

Чтобы объекты, указанные в конструкторе класса создавались и подгружались автоматически можно использовать autowiring в контейнере зависимостей от symfony.

Устанавливаем DI компонент от symfony:

composer require symfony/dependency-injection

Описываем зависимости:

// создаём строитель контейнера
$container = new \Symfony\Component\DependencyInjection\ContainerBuilder();

// добавляем публичные зависимости с автозагрузкой
$container->autowire(Config::class)->setPublic(true);
$container->autowire(Database::class)->setPublic(true);

// компилируем контейнер
$container->compile();

Опишем простой класс Config, который берёт настройки из внешнего файла:

Как установить установщик?

php -r "readfile('https://symfony.com/installer');" > symfony

Как установить symfony?

symfony new project-name

Как установить старый symfony?

symfony new old-project-name 2.8

Как настроить PhpStorm?

  • устанавливаем плагин Symfony Plugin
  • устанавливаем плагин PHP Annotations
  • ставим галочку Languages & Frameworks > PHP > Symfony > Enable Plugin for this Project
  • на этой же вкладке меняем пути на var/cache/dev/appDevUrlGenerator.php и var/cache/dev/translations