Языки программирования

Вложенные функции php

Функции можно вызывать внутри других функций — по аналогии с тем, как одна управляющая конструкция (if, while, for и т.д.) может находиться внутри другой.

Такая возможность удобна в любых программах, и в больших, и в малых, поскольку она увеличивает степень модульности приложения и упрощает сопровождение программы.

Вложенные функции выглядят следующим образом:
 function Parent($a) 
   { 
      echo $a; 
      function Child($b) 
   { 
      echo $b+1; 
      return $b*$b; 
   } 
      return $a*$a*Child($a); // фактически возвращает $a*$a*($a+1)*($a+1) 
   } 
// Вызываем функции 
Parent(10); 
Child(30); 
Видно, что нет никаких ограничений на место описания функции — будь то глобальная область видимости программы, либо же тело какой-то другой функции.

Каждая функция добавляется во внутреннюю таблицу функций PHP тогда, когда управление доходит до участка программы, содержащего определение этой функции. При этом, конечно, само тело функции пропускается, однако ее имя фиксируется и может далее быть использовано в сценарии для вызова.

Если же в процессе выполнения программы PHP никогда не доходит до определения некоторой функции, она не будет «видна», как будто ее и не существует.

Вложенное объявление еще не делает функцию «защищенной», то есть не ограничивает возможность ее вызова той функцией, в которой она была объявлена.

Вложенная функция не наследует параметров родительской функции. Параметры должны передаваться ей точно так же, как и любой другой функции.

Хотя вложенные функции не защищены от вызова из других точек сценария, они не могут вызываться до вызова своей родительской функции.

При попытке вызвать вложенную функцию раньше вызова родительской функции выводится сообщение об ошибке.
Самоучитель по PHP