Может ли функция использовать до объявления функции и определения функции в PHP?
Я никогда не видел такого сценария в PHP. Большинство примеров и руководств по PHP используют формат вызова функций после объявления, но здесь я попробовал это впервые. Я думаю, что PHP использует интерпретатор и читает код построчно. не должно ли оно генерировать ошибку в строке 3, если оно не обнаружило никакого объявления функции перед строкой 3?
<?php
$m=new m;
echo $m->abd(17,18);
class m
{
function abd($a,$b)
{
return($a+$b);
}
}
?>
Но вывод был
35
Это возможно? Для справки это песочница ссылка, вы можете попробовать этот код
1 ответ
Из руководства по PHP
Функции не должны быть определены до того, как на них будут ссылаться, за исключением случаев, когда функция определяется условно, как показано в двух примерах ниже.
Тем не менее, это просто хорошая практика, чтобы определить ваши функции, прежде чем использовать их
Эти два примера
<?php
$makefoo = true;
/* We can't call foo() from here
since it doesn't exist yet,
but we can call bar() */
bar();
if ($makefoo) {
function foo()
{
echo "I don't exist until program execution reaches me.\n";
}
}
/* Now we can safely call foo()
since $makefoo evaluated to true */
if ($makefoo) foo();
function bar()
{
echo "I exist immediately upon program start.\n";
}
?>
А также
<?php
function foo()
{
function bar()
{
echo "I don't exist until foo() is called.\n";
}
}
/* We can't call bar() yet
since it doesn't exist. */
foo();
/* Now we can call bar(),
foo()'s processing has
made it accessible. */
bar();
?>
Для получения дополнительной информации, этот ответ является источником из другого ответа SO