Я не уверен, что сделал это правильно.
Как я понимаю:
если у меня есть класс foo и статическая панель методов, я могу зарегистрировать это как обратный вызов, передав массив в array("foo","bar")
качестве имени функции.
Если у меня есть экземпляр класса в $ foo и я хочу вызвать панель методов, я передаю массив array($foo,'bar')
.
Если мне нужно зарегистрировать действие внутри самого класса, будет ли оно работать array($this,'bar')
?
Ответы:
Да, это работает.
$this
Документы ссылаются на конкретный экземпляр, необходимый для обратного вызова . Это в точности как$foo
пример, который вы приводите. Просто$this
он немного более особенный, но в целом он одинаковый и работает безошибочно с обратными вызовами в PHP.Дополнительно:
Да, вы можете сделать это, для статической функции, вы также можете записать ее как строку вместо массива:
foo::bar
см. Документацию по обратным вызовам . Может быть удобно.источник
Для статических методов вы также можете сделать это:
когда следующее дает неопределенную константу класса 'bar' :
пример - при указании $ control_callback для
wp_add_dashboard_widget
источник