Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: is_callable
Forum PHP.pl > Forum > PHP > Object-oriented programming
smiady
Stworzyłem prostego MVC, gdzie z linku wyłowują mi się odpowiednie metody z odpowiednich klas.
I mam metodę actionBazaDanych, która mi się wyłowuje bez żadnych błędów.
Zastanawia mnie jednak to, dlaczego is_callable dla tej nazwy zwraca false.

  1. $nazwa= 'actionBazaDanych';
  2.  
  3. if(is_callable($nazwa)) {
  4. echo 'OK';
  5. } else {
  6. echo 'FAIL';
  7. }


Rezultatem tego kodu jest wynik FAIL.
Jeśli dobrze rozumiem is_callable sprawdza czy podany argument może być nazwą funkcji lub metody.
Skoro tak to, dlaczego dla nazwy actionBazaDanych zwraca false, jeśli nazwa tej metody mi odpali ?
Comandeer
  1. <?php
  2.  
  3. class A
  4. {
  5. public function action()
  6. {
  7.  
  8. }
  9. }
  10.  
  11. var_dump(is_callable('action'), is_callable(['A', 'action']), is_callable('action', true));


Sam mówisz, że jest to metoda jakiejś klasy - więc trzeba sprawdzić czy istnieje w kontekście danej klasy. Sama nazwa przekazana do is_callable szuka funkcji globalnej o takiej nazwie, nie metody klasy. Natomiast sprawdzenie czy dana nazwa może być nazwą funkcji/metody to kwestia dostawienia true jako drugiego parametru
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.