bay_ebook, как раз в ООП сейчас и реализовано. Слишком длинный синтаксис для вызова объектов, которые единожды обрабатываются при старте скрипта.
Уже лучше global каждый раз писать. Этот оператор работает в 8 раз быстрее за создание новой локальной переменной.
Вчера было CONF_VAR, потом было переписано в Registry::CONF['VAR']. Сейчас понял, что это неудобно и ООП здесь совсем не нужен, а нужен обычный супермассив. Как?
Alipapa, а можно и в REQUEST, GLOBALS. Нужны новые супермассивы CONF, LANG, DIR.
Ёхан Палыч, это не подходит. Нужен именно новый супермассив.
Пардон, substr($string, 0, (strlen($string) - 3)).
Это не извращение, а метод вырезки последний 3 символов.
Если точно известно что нужно удалить последние 3 символа, можно сделать так:
rtrim(substr($string, 0, (strlen($string) - 3)));
Попробуйте в анонимном режиме. Возможно, конфликт между расширениями.
dkameleon, с PHP 5.4.
Я пока систему допишу, уже 5.5 стабильный выйдет. 😂 Позавчера RC1 уже вышел. Интегрированный Zend Opcache сильная штука.---------- Добавлено 20.05.2013 в 21:53 ----------
<?phpdefine('CONF_DB_NAME', 'private');$arr = [];class Registry { static $params = ['DB_NAME' => 'private']; static function __callStatic($name, $param) { return self::$params[$param[0]]; }}define('FIRST_TIME', microtime(true));$i = 0;while ($i < 1000000) { ++$i; $arr[$i] = CONF_DB_NAME;}define('SECOND_TIME', microtime(true));unset($arr);$i = 0;while ($i < 1000000) { ++$i; $arr[$i] = Registry::get('DB_NAME');}define('THIRD_TIME', microtime(true));echo 'Перший тест виконувався: ',(SECOND_TIME - FIRST_TIME),'<br>';echo 'Другий тест виконувався: ',(THIRD_TIME - SECOND_TIME);?>
Перший тест виконувався: 0.67980408668518Другий тест виконувався: 2.4728450775146
В четыре раза медленнее, но работает. Только сейчас подумал - а смысл в __callStatic :), если по идеи это та же одиночка, которая работает в 2 раза медленнее. Не то все-равно.
Милованов Ю.С, причем здесь функции? Мы о методах говорили.
class A { static function B() { return array('say' => 'hello'); } } var_dump(A::B()['say']);
string(5) "hello"
Хотя у меня и ваш пример работает (PHP 5.5b4).
У меня во всех методах так. Точно знаю, с PHP 5.4 это работает.
И плодить ссылки в памяти. :( Да и еще больше букофф.
Проканает. get вернет массив.