[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: почему func_num_args не может быть аргументом?
cepaqpum
// не работает
foo( func_num_args() );

// работает
$args = func_num_args();
foo( $args );
В чем различие между старыми версиями пхп до 5.3.0 и новым 5.3.0 и выше? Что именно изменилось чтобы этот пример работал в новых версиях?



Спустя 30 минут (23.02.2012 - 07:46) Rand написал(а):
Что нужно? Передать функцию как параметр? Может легче использовать её внутри функции, как и предполагается?

PHP 5.3.3 - всё работает:
function foo($n) {
echo $n . <br />;
echo func_num_args();
}

function bar($a, $b) {
foo(func_num_args());
}

bar(1, 2);

Спустя 4 минуты, 27 секунд (23.02.2012 - 07:50) Guest написал(а):
Меня интересует почему в PHP 5.3.3 - всё работает
Не понимаю в чем различие

Спустя 7 минут, 5 секунд (23.02.2012 - 07:57) Rand написал(а):
Всё есть в документации: http://php.net/manual/ru/function.func-num-args.php
Цитата
Так как для определения параметров данной функции необходим контекст выполнения, она не может быть передана в качестве параметра в версиях PHP до 5.3.0. Если функцию все же необходимо передать, то нужно присвоить ее переменной, которую уже можно использовать при передаче.
Раньше нельзя было, сейчас можно.

Спустя 5 минут, 19 секунд (23.02.2012 - 08:03) Guest написал(а):
Не сразу въехал что это значит smile.gif
Тоесть другими словами интерпретатор просто не выполняет то что в ковычках?

Спустя 21 минута, 59 секунд (23.02.2012 - 08:25) Rand написал(а):
Для того, чтобы точно знать, что делает интерпретатор, надо смотреть исходники PHP.
foo(func_num_args()) - это не передача функции, как параметра. Интерпретатор будет пытаться исполнить функцию func_num_args в текущем контексте, а уже результат её работы передать как параметр. По скольку в глобальной области видимости никаких параметров нет, то работать ничего не будет.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.