Projekt, nad którym pracuję, zawiera coś w rodzaju wrappera dla funkcji call_user_func (_array), która wykonuje pewne sprawdzenia przed wykonaniem. Jedną z tych kontroli jest method_exists (W przypadku, gdy podany pierwszy argument jest instancją klasy, a drugi jest nazwą metody) Drugi to_przeprowadzalny. Funkcja rzuci wyjątek, jeśli jedna z tych kontroli nie powiedzie się.PHP __call vs method_exists
Mój kod zawiera tablicę z nazwami funkcji (setFoo, setBar itp.) Oraz funkcją php magic do przeciążania (__call), która obsługuje ustawianie, zastępowanie i usuwanie pewnych zmiennych (lepsze niektóre elementy tablicy).
Problem: method_exists zwróci false, jeśli funkcja nie jest zdefiniowana.
Czy mam szansę uzyskać wartość true, jeśli funkcja __call prawidłowo obsługuje żądanie?
Wielkie pytanie, będę bawić się z tym. –
Potrzebna jest kolejna "magiczna metoda" __canCall lub coś innego ... –
is_callable() działa z instancjami klas. Nie widzę powodu, dla którego używasz method_exists() w ogóle. is_callable() robi wszystko method_exists() ma plus działa z __call(). – dave1010