Использование констант для определения конфигурации

hell0w0rd

Продвинутый новичок
Волнует в основном будет ли такое кешироваться APC и подобными и можно ли сделать лучше:
PHP:
class Application extends \Silex\Application
{
    const DEBUG = 'debug';
    const PRODUCTION = 'production';
    const TESTING = 'testing';

    private $config = array();

    public function configure()
    {
        $this->config['base'] = Yaml::parse(ROOT_DIR.'/app/config/base.yml');
        $env = constant('self::'.$this->config['base']['environment']);
        $this['debug'] = $env === self::DEBUG;
        $this->config['env'] = Yaml::parse(ROOT_DIR.'/app/config/'.$env.'.yml');
    }
}
Как вариант можно делать что-то такое:
PHP:
class Application extends \Silex\Application
{
    static $DEBUG = 'debug';
    const PRODUCTION = 'production';
    const TESTING = 'testing';

    private $config = array();

    public function configure()
    {
        $this->config['base'] = Yaml::parse(ROOT_DIR.'/app/config/base.yml');
        $envName = &$this->config['base']['environment'];
        $env = self::$$envName;
        $this['debug'] = $env === self::$DEBUG;
        $this->config['env'] = Yaml::parse(ROOT_DIR.'/app/config/'.$env.'.yml');
    }
}
 

WMix

герр M:)ller
Партнер клуба
конфиги да а окружение на сервере
положил прогу на свой комп она понимает окружение типа debug на сервер бросил продакшин
 

fixxxer

К.О.
Партнер клуба
Если так волнует экономия на спичках, лучше конфиги на php-файлы переделай ;)
 

hell0w0rd

Продвинутый новичок
конфиги да а окружение на сервере
положил прогу на свой комп она понимает окружение типа debug на сервер бросил продакшин
Да, я согласен что в этом что-то есть. С другой стороны мне кажется все же удобнее подобные вещи хранить в конфиге. Например чтобы из админки в дальнейшем можно было переключиться.
 

hell0w0rd

Продвинутый новичок
Если так волнует экономия на спичках, лучше конфиги на php-файлы переделай ;)
Нет, скорее волнует сам процесс, не только в отношении этого участка кода. Кешироваться такое будет в приципе или нет?
И какой вариант тогда лучше из тех что я привел?
 

WMix

герр M:)ller
Партнер клуба
описал весь конфиг для всех вариантов сразу, дальше просто в зависимости от окружения выбрал правильную настройку и в путь
 

WMix

герр M:)ller
Партнер клуба
Нет, скорее волнует сам процесс, не только в отношении этого участка кода. Кешироваться такое будет в приципе или нет?
И какой вариант тогда лучше из тех что я привел?
никакой, просто ini или как у тебя yaml перепарсил в масив/обьект и положил в cache...
 

fixxxer

К.О.
Партнер клуба
1) если не хочется .htaccess, можно файлик env.php вида '<?php return 'DEBUG'; ?>', заигноренный в vcs
2) лучше оба. это вопрос из разряда одинарных-двойных кавычек. пофигу, все быстро
 
  • Like
Реакции: WMix

hell0w0rd

Продвинутый новичок
Эх, ок)
А на чем, кроме sql тогда стоит экономить, если это - спички?)
 

WMix

герр M:)ller
Партнер клуба
PHP:
Yaml::parse(ROOT_DIR.'/app/config/'.$env.'.yml')
эта штука возвращает нативный пхп, его и нужно запомнить чтоб не парсить постоянно,.. а конфигурить конечно удобнее ямлом
 

hell0w0rd

Продвинутый новичок
PHP:
Yaml::parse(ROOT_DIR.'/app/config/'.$env.'.yml')
эта штука возвращает нативный пхп, его и нужно запомнить чтоб не парсить постоянно,.. а конфигурить конечно удобнее ямлом
А как правильно запомнить-то?)
Хотя 5.4 массивы красивее выглядят:
PHP:
environment: DEBUG
db:
  options:
    driver: pdo_mysql
    dbname: silex_app
    host: 127.0.0.1
    user: root
    password: root

twig:
  path: app/templates
  options:
    autoescape: false
    cache: app/cache/twig
и
PHP:
<?php
return [
    'environment' => 'DEBUG',
    'db' => [
        'options' => [
            'driver' => 'pdo_mysql',
            'dbname' => 'silex_app',
            'host' => '127.0.0.1',
            'user' => 'root',
            'password' => 'root'
        ]
    ],
    'twig' => [
        'path' => 'app/templates',
        'options' => [
            'autoescape' => 'false',
            'cache' => 'app/cache/twig'
        ]
    ]
];
Последнее работает в 10^4 быстрее:)
 

WMix

герр M:)ller
Партнер клуба
Memcache::set() не?
во втором синтакс слегка сложнее но в общем да тоже вариант
 

fixxxer

К.О.
Партнер клуба
если конфиги меняются редко, можно прямо в php файлы кэшировать

apc_store еще как вариант
 
Сверху