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

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');
    }
}
 
конфиги да а окружение на сервере
положил прогу на свой комп она понимает окружение типа debug на сервер бросил продакшин
 
Если так волнует экономия на спичках, лучше конфиги на php-файлы переделай ;)
 
конфиги да а окружение на сервере
положил прогу на свой комп она понимает окружение типа debug на сервер бросил продакшин
Да, я согласен что в этом что-то есть. С другой стороны мне кажется все же удобнее подобные вещи хранить в конфиге. Например чтобы из админки в дальнейшем можно было переключиться.
 
Если так волнует экономия на спичках, лучше конфиги на php-файлы переделай ;)
Нет, скорее волнует сам процесс, не только в отношении этого участка кода. Кешироваться такое будет в приципе или нет?
И какой вариант тогда лучше из тех что я привел?
 
описал весь конфиг для всех вариантов сразу, дальше просто в зависимости от окружения выбрал правильную настройку и в путь
 
Нет, скорее волнует сам процесс, не только в отношении этого участка кода. Кешироваться такое будет в приципе или нет?
И какой вариант тогда лучше из тех что я привел?
никакой, просто ini или как у тебя yaml перепарсил в масив/обьект и положил в cache...
 
1) если не хочется .htaccess, можно файлик env.php вида '<?php return 'DEBUG'; ?>', заигноренный в vcs
2) лучше оба. это вопрос из разряда одинарных-двойных кавычек. пофигу, все быстро
 
  • Like
Реакции: WMix
Эх, ок)
А на чем, кроме sql тогда стоит экономить, если это - спички?)
 
PHP:
Yaml::parse(ROOT_DIR.'/app/config/'.$env.'.yml')
эта штука возвращает нативный пхп, его и нужно запомнить чтоб не парсить постоянно,.. а конфигурить конечно удобнее ямлом
 
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 быстрее:)
 
Memcache::set() не?
во втором синтакс слегка сложнее но в общем да тоже вариант
 
если конфиги меняются редко, можно прямо в php файлы кэшировать

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