Имеет ли значение порядок определения функций?

В приведенном ниже сценарии имеет значение порядок, в котором элементы объявляются?

Например, если 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 должен иметь возможность видеть это определение при попытке вызвать его.

Это не имеет значения, если оно объявлено где-то на странице.

как видно здесь:

http://codepad.org/aYbO7TYh

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