Rejestrowanie metod klas jako haków zwrotnych


16

Nie jestem pewien, czy zrobiłem to poprawnie.

Tak jak rozumiem:

jeśli mam klasę foo i statyczny pasek metod, mogę zarejestrować to jako wywołanie zwrotne, przekazując tablicę array("foo","bar")jako nazwę funkcji.

Jeśli mam instancję klasy w $ foo i chcę wywołać pasek metod, przekazuję tablicę array($foo,'bar').

Gdybym musiał zarejestrować akcję w samej klasie, czy zadziałałoby array($this,'bar')?


3
Czy test nie byłby szybszy niż zadawanie pytania? ;) Tak, możesz to zrobić.
fuxia

2
Test może pomóc, ale czasami też szukasz opinii.
Wydaje

Odpowiedzi:


11

Gdybym musiał zarejestrować akcję w samej klasie, czy zadziałałoby array($this, 'bar')?

Tak to działa. $thisDokumenty odnoszą się do konkretnego wystąpienia potrzebnego do wywołania zwrotnego . Dokładnie tak jak w $foopodanym przykładzie. Po prostu $thisjest to trochę bardziej wyjątkowe, ale reprezentuje w zasadzie to samo i działa bezbłędnie z wywołaniami zwrotnymi w PHP.

Dodatkowy:

jeśli mam klasę foo i statyczny pasek metod, mogę zarejestrować to jako wywołanie zwrotne, przekazując tablicę array("foo","bar")jako nazwę funkcji.

Tak, możesz to zrobić, dla funkcji statycznej możesz również napisać ją jako ciąg zamiast tablicy: foo::barpatrz Dokumenty wywołań zwrotnych . Może się przydać.


1

W przypadku metod statycznych możesz to również zrobić:

['foo','bar'] 

gdy następujący ciąg daje niezdefiniowanej stałej „bar” klasy :

foo::bar

przykład - przy określaniu $ call_callback dla wp_add_dashboard_widget

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.