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')
?
Odpowiedzi:
Tak to działa.
$this
Dokumenty odnoszą się do konkretnego wystąpienia potrzebnego do wywołania zwrotnego . Dokładnie tak jak w$foo
podanym przykładzie. Po prostu$this
jest to trochę bardziej wyjątkowe, ale reprezentuje w zasadzie to samo i działa bezbłędnie z wywołaniami zwrotnymi w PHP.Dodatkowy:
Tak, możesz to zrobić, dla funkcji statycznej możesz również napisać ją jako ciąg zamiast tablicy:
foo::bar
patrz Dokumenty wywołań zwrotnych . Może się przydać.źródło
W przypadku metod statycznych możesz to również zrobić:
gdy następujący ciąg daje niezdefiniowanej stałej „bar” klasy :
przykład - przy określaniu $ call_callback dla
wp_add_dashboard_widget
źródło