Магические методы __set, __get

1 23
O
На сайте с 29.05.2008
Offline
195
#21
А у меня на 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 раза медленнее. Не то все-равно.

dkameleon
На сайте с 09.12.2005
Offline
386
#22

а ещё так можно:

static function __callStatic($name, $param) {
return self::$params[$name];
}
.........
$a = Registry::DB_NAME();



---------- Добавлено 20.05.2013 в 23:50 ----------

ortegas:
$arr = [];

ух ты. а такое давно работает?

Дизайн интерьера (http://balabukha.com/)
O
На сайте с 29.05.2008
Offline
195
#23

dkameleon, с PHP 5.4.

1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий