Доброе времени суток! Долгое время работаю с YAML в своем проекте и использую его для конфигураций, но вот думаю о том что бы перейти на нативные PHP конфиги в виде: PHP: <?php return [ // config data here ]; и подключать вот так: PHP: $config = (array) require config.php Вижу что и Symfony уходит от Yaml к PHP https://github.com/symfony/symfony/issues/37186 Причины почему я подумал о переходе c YAML на PHP в том что: - YAML нужно обязательно кешировать, а это не всегда возможно, например на моменте старта системы, кеш инициализиурется не первым, да и сам нуждается в конфигурациях, которые лежат YAML файлах. Вот пример такой ситуации: https://github.com/flextype/flextype/blob/dev/src/flextype/bootstrap.php#L49-L103 - YAML необходимо парсить и опять же кешировать иначе это влияет на производительность Если с PHP конфигами - такой способ не нуждается ни в каких парсерах и кешировании, но зато такой способ дает возможность людям написать практически любой код на PHP в том числе и опасный, и более того этот код может выполняться и на стороне шаблонов если передавать эту переменную в шаблон или какой нибудь еще другой способ обращению к конфигу например через функцию хеллер config() также получается нельзя давать такой конфиг править в чистом виде как файл в админке, что тоже может привести к проблемам безопасности. вот и как быть, хз как поступить, остаться на YAML или перейти на PHP. а вы в каком формате используете конфигурации в ваших проектах ?
зачем (array) ? что же раньше игнорили ? --- Добавлено --- каким людям дают доступ к конфигурации системы ?
Если кто-то имеет доступ к чтению и редактированию конфигов, зачем ему туда вообще что-то писать? У него и так есть доступ ко всему )
> что же раньше игнорили ? и раньше все конфигурации кешировал, кроме одного места в проекте - это стартовый конфиг ибо к кэшу не достучаться от туда, но похоже что нашел выход, вот к вечеру. Вот к чему пришел. YAML и ему подобные это такая себе своеобразная прослойка, как и любой шаблонизатор, которые были придуманы как раз для того что бы удобно писать конфиги и обезопаситься от того чтобы была такая возможность как написать опасный код в шаблонах или конфигурациях, который способен на выполнение каких либо деструктивных действий. Поэтому не вижу смысла в переходе на чистые PHP Configs, когда можно вполне нормально в них кешировать, а писать при этом конфиги на YAML нашел такую статью https://medium.com/@dylanwenzlau/50...n-redis-memcache-apc-in-php-hhvm-dcd26e8447ad и Doctrine Cache уже предлагает PhpFileCache, который по сути и создает этот PHP Arrays только вот копаясь в его исходниках, я не могу понять почему первая ветка условия у меня никогда не выполняется https://github.com/doctrine/cache/blob/1.10.x/lib/Doctrine/Common/Cache/PhpFileCache.php#L87-L93 а толькои лишь вторая выполняется, но если закомментировать это условие и оставить только этот код https://github.com/doctrine/cache/blob/1.10.x/lib/Doctrine/Common/Cache/PhpFileCache.php#L88-L89 тогда сохраняется PHP Arrays и читается он тоже нормально. Вопрос зачем это условие ? и почему первая ветка его не выполняется ?
Вообщем вопрос решил путем добавления своего нового драйвера кеша исправлением того что бы оно в чистый php array сохраняло и подключили ее к доктрине https://github.com/flextype/flextype/commit/66aa2dcc11cb44bb42e0021d4c8dca27241b78c6