Может ли функция использовать до объявления функции и определения функции в 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

Другие вопросы по тегам