ortegas

Рейтинг
195
Регистрация
29.05.2008

bay_ebook, как раз в ООП сейчас и реализовано. Слишком длинный синтаксис для вызова объектов, которые единожды обрабатываются при старте скрипта.

function() {
$CONF = GlobalConfig::$CONF;
}

Уже лучше 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.2.17(не надо смеятся) не работает с функциями.

Я пока систему допишу, уже 5.5 стабильный выйдет. 😂 Позавчера RC1 уже вышел. Интегрированный Zend Opcache сильная штука.

---------- Добавлено 20.05.2013 в 21:53 ----------


<?php
define('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).

Очень было бы удобно.
$login = mysql_fetch_assoc(mysql_query("SELECT `login` FROM tbl1 WHERE `id`='$id' LIMIT 1"))['login'];

У меня во всех методах так. Точно знаю, с PHP 5.4 это работает.

Не обязательно обращаться "напрямую", можно сохранить инстанс в локальную переменную или в свойство класса.

И плодить ссылки в памяти. :( Да и еще больше букофф.

по моему такой синтаксис в php не проканает, и все равно придется обращаться типа CONF::get('DB_PASSWORD');

Проканает. get вернет массив.

Всего: 3009