НЕ эффективно, кажется. (И я основываю все предположения здесь на одном комментарии от php.net, я все еще не делал тесты самостоятельно.)
вызов константы, в два раза больше времени вызова переменной.
проверка существования константы займет 2 мс и 12 мс для ложного срабатывания!
Вот пример из комментариев к странице определения в онлайн-документе php.
Перед использованием define () взгляните на следующие тесты:
true 0.65ms
$true 0.69ms (1)
$config['true'] 0.87ms
TRUE_CONST 1.28ms (2)
true 0.65ms
defined('TRUE_CONST') 2.06ms (3)
defined('UNDEF_CONST') 12.34ms (4)
isset($config['def_key']) 0.91ms (5)
isset($config['undef_key']) 0.79ms
isset($empty_hash[$good_key]) 0.78ms
isset($small_hash[$good_key]) 0.86ms
isset($big_hash[$good_key]) 0.89ms
isset($small_hash[$bad_key]) 0.78ms
isset($big_hash[$bad_key]) 0.80ms
PHP версии 5.2.6, Apache 2.0, Windows XP
Каждый оператор выполнялся 1000 раз, а время включения 12 мс
1000 звонков не заставят конечных пользователей рвать на себе волосы,
он действительно дает некоторые интересные результаты при сравнении с if (true):
1) if ($ true) был практически идентичен 2) if (TRUE_CONST) был почти
в два раза медленнее - я думаю, что подстановка не выполняется при компиляции
время (мне пришлось перепроверить это!) 3) определено () в 3 раза медленнее
если константа существует, 4) определен () 19 раз, если
константа не существует! 5) isset () замечательно эффективен независимо
о том, что вы бросаете на это (отличная новость для тех, кто реализует массив
управляемые системы событий - я!)
Может хотеть избежать, если (определено ('DEBUG')) ...
от tris + php в tfconsulting dot com dot au 26-Mar-2009 06: 40
http://us.php.net/manual/en/function.defined.php#89886