Имеет ли значение порядок определения функций?
В приведенном ниже сценарии имеет значение порядок, в котором элементы объявляются?
Например, если add_action указывает на функцию, которая еще не была определена? Имеет ли значение, или объявление функции всегда предшествует любому коду, в котором она вызывается?
add_action('load-categories.php', 'my_admin_init');
function my_admin_init(){
//do something
}
7 ответов
Это не имеет значения, если функция объявлена до или после вызова, но функция должна присутствовать в скрипте и должна быть загружена в.
Это первый метод, и он будет работать:
some_func($a,$b);
function some_func($a,$b)
{
echo 'Called';
}
Это второй метод, который также будет работать:
function some_func($a,$b)
{
echo 'Called';
}
some_func($a,$b);
Из руководства по PHP:
Функции не должны быть определены до того, как на них будут ссылаться, за исключением случаев, когда функция определяется условно, как показано в двух примерах ниже.
Однако, хотя это скорее личное предпочтение, я настоятельно рекомендую включить все функции, которые вы фактически используете во внешнем functions.php
затем файл с помощью require_once()
или же include_once()
(в зависимости от вкусов) в самом верху вашего основного файла PHP. Это имеет более логичный смысл - если кто-то еще читает ваш код, совершенно очевидно, что вы используете пользовательские функции и они расположены в functions.php
, Сохраняет много догадок ИМО.
Вы можете вызвать функцию до того, как она будет определена, файл сначала анализируется, а затем выполняется.
Нет.
Это не C:P...
Как вы можете видеть, весь файл сначала анализируется, а затем выполняется.
Если вызывается несуществующая функция, php выдаст ошибку.
Неустранимая ошибка: вызов неопределенной функции
Согласно моему личному опыту, в некоторых особых случаях (например, передача массива в функцию или функцию внутри функции и т. Д.). Это лучший вариант для определения функции над вызовом. Из-за этого иногда ни функция не работает, ни PHP выдает ошибку.
В обычных функциях php это не имеет значения. Вы можете использовать оба типа.
Цитирование раздела " Пользовательские функции " руководства:
Функции не должны быть определены до того, как на них будут ссылаться, кроме случаев, когда функция определена условно
Итак, в основном: вы можете вызвать функцию до того, как будет написано ее определение - но, конечно, PHP должен иметь возможность видеть это определение при попытке вызвать его.
Это не имеет значения, если оно объявлено где-то на странице.
как видно здесь: