Я новичок в PHP и WordPress, поэтому, пожалуйста, будьте осторожны!
Я создаю плагин - следую нескольким учебникам, чтобы все заработало.
Мой вопрос: почему функция, которую я хочу вызвать, включена в array($this, function)
? Например, у меня есть этот код конструктора внутри моего класса
function __construct() {
add_action( 'admin_init',array( $this, 'getStuffDone' ) );
}
Функция getStuffDone запускается нормально - но почему она должна быть в том формате, в котором она находится?
Любое понимание очень ценится.
add_action
с классом и PHP Передача функцийОтветы:
Это обратный вызов PHP . Вам нужен синтаксис, чтобы сохранить ссылку на экземпляр класса.
Скажем так: если у вас его не было
$this
, откуда вызывающий узнает, чтоgetStuffDone
это метод вашего класса, а не просто обычная функция PHP? Это не так.Использование
array( $this, 'getStuffDone' )
говорит PHP:источник
except language constructs such as: array()
, но здесь мы передаем массив. Это опечатка или я не правильно понял предложение?в add_action () определение функции выглядит следующим образом :
так в соответствии с тем, что выглядит так, как он ожидает (строка, строка, int, int)
В традиционном php-файле вторым параметром будет просто одно из имен ваших функций.
так что вы бы
add_action('admin_init','my_init_function')
Похоже, вы используете класс для инкапсуляции вашего плагина. Другие классы могут иметь функции с тем же именем ( getStuffDone ).
Таким образом, ваша функция известна только со ссылкой на ваш класс, поэтому вы должны указать свой класс,
$this
а также имя функции.Если вы пытаетесь сослаться на функцию внутри класса, вы должны использовать синтаксис, вызываемый массивом.
Смотрите также codex.wordpress.org
источник
См. Документацию в разделе « Примечания, внесенные пользователем »:
источник