За последние 24 часа нас посетили 9242 программиста и 461 робот. Сейчас ищут 87 программистов ...

Конфигурация проекта и плагинов в PHP или YAML

Тема в разделе "PHP для профи", создана пользователем Awilum, 26 июл 2020.

Метки:
  1. Awilum

    Awilum Активный пользователь

    С нами с:
    15 ноя 2009
    Сообщения:
    297
    Симпатии:
    21
    Адрес:
    Russian Federation
    Доброе времени суток!

    Долгое время работаю с YAML в своем проекте и использую его для конфигураций, но вот думаю о том что бы перейти на нативные PHP конфиги в виде:

    PHP:
    1. <?php
    2.  
    3. return [
    4.    // config data here
    5. ];
    и подключать вот так:

    PHP:
    1. $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.
    а вы в каком формате используете конфигурации в ваших проектах ?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    6.555
    Симпатии:
    1.040
    Адрес:
    Лень
    зачем (array) ?
    что же раньше игнорили ?
    --- Добавлено ---
    каким людям дают доступ к конфигурации системы ?
     
  3. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    716
    Если кто-то имеет доступ к чтению и редактированию конфигов, зачем ему туда вообще что-то писать? У него и так есть доступ ко всему )
     
  4. Awilum

    Awilum Активный пользователь

    С нами с:
    15 ноя 2009
    Сообщения:
    297
    Симпатии:
    21
    Адрес:
    Russian Federation
    > что же раньше игнорили ?

    и раньше все конфигурации кешировал, кроме одного места в проекте - это стартовый конфиг ибо к кэшу не достучаться от туда, но похоже что нашел выход, вот к вечеру.

    Вот к чему пришел.

    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 и читается он тоже нормально. Вопрос зачем это условие ? и почему первая ветка его не выполняется ?
     
    #4 Awilum, 26 июл 2020
    Последнее редактирование: 26 июл 2020
  5. Awilum

    Awilum Активный пользователь

    С нами с:
    15 ноя 2009
    Сообщения:
    297
    Симпатии:
    21
    Адрес:
    Russian Federation
  6. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.655
    Симпатии:
    344
    ИМХО это самый нормальный вариант... все остальное неудобное)