Реєстрація методів Class як зворотних дзвінків


16

Я не впевнений, чи правильно я це зробив.

Як я це розумію:

якщо у мене є клас foo та статичний рядок методів, я можу зареєструвати це як зворотний виклик, передавши масив array("foo","bar")як ім'я функції.

Якщо у мене є екземпляр класу в $ foo і хочу викликати рядок методів, я передаю масив array($foo,'bar').

Якщо мені потрібно зареєструвати дію всередині класу, чи працювала б вона array($this,'bar')?


3
Невже тест не буде швидшим, ніж задати питання? ;) Так, ви можете це зробити.
фуксія

2
Тест може допомогти, але іноді ви також шукаєте відгуки. Я думаю, що це нормально ставити питання, і є це правило,
ставлячи під

Відповіді:


11

Якщо мені потрібно зареєструвати дію всередині класу, чи працювала б вона array($this, 'bar')?

Так, це працює. $thisДокументи посилаються на конкретний екземпляр, необхідний для зворотного дзвінка . Це точно як $fooприклад, який ви наводите. Це просто $thisдещо особливіше, але воно в основному те саме і працює бездоганно з зворотними зворотами в PHP.

Додатково:

якщо у мене є клас foo та статичний рядок методів, я можу зареєструвати це як зворотний виклик, передавши масив array("foo","bar")як ім'я функції.

Так, ви можете зробити це, і для статичної функції ви можете записати її як рядок замість масиву: foo::barдив. Документи зворотних зворотів . Це може бути зручно.


1

Для статичних методів ви також можете зробити це:

['foo','bar'] 

коли наступне дає невизначеному класу константу 'bar' :

foo::bar

приклад - коли вказується $ control_callback для wp_add_dashboard_widget

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.