Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: get_class_methods i abstract
Forum PHP.pl > Forum > PHP > Object-oriented programming
kicaj
Funkcja get_class_methods() zwraca tablice metod z podanej klasy, jak dowiedziec sie ktore sa metodami abstrakcyjnymi?
NoiseMc
Moze sprobuj pokombinowac z tym. Prawde mowiac nie wglebialem sie w refleksje w PHP ale wydaje mi sie ze mogloby Ci to pomoc.
kwiateusz
  1. <?php
  2. abstract class test{
  3.  
  4. abstract function make();
  5. public function make2(){}
  6. }
  7.  
  8. $class = new ReflectionClass('test');
  9. $metody = $class->getMethods();
  10.  
  11. foreach($metody as $metoda){
  12. echo $metoda->getName().' -> ';
  13. echo $metoda->isAbstract()'abstrakcyjna':'zwykła';
  14. }
  15.  
  16. ?>
kicaj
No wlasnie zauwazylem w pierwszej notce, podobny przyklad takze z wykorzystaniem getMethods() http://us.php.net/manual/pl/language.oop5....ction.php#76884

Moze da sie jednak bez Reflecion?
kicaj
Okey, a teraz potrzebuje zrobic cos takiego:
  1. <?php
  2. abstract class Abstrakcyjna
  3. {
  4. abstract function Index();
  5. }
  6.  
  7. class Klasa extends Abstrakcyjna
  8. {
  9. // brak zaimplementowanej metody Index()!
  10. }
  11. ?>

Php wywala odrazu:
Kod
Fatal error: Class Klasa contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Abstrakcyjna::Index) in plik.php on line 11

Jak zrobic by brakiem zaimplementowanej metody Index w Klasa zajala sie klasa Reflection?
kicaj
Inaczej:
Jak obsluzyc przez wyjatek ponizszy komunikat:
Kod
Fatal error: Class ProductsController contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Controller::Index) in productsController.class.php on line 77

Jest w ogole taka mozliwosc?
Sedziwoj
A dlaczego miało być jako wyjątek?
Przecież brak implementacji jest błędem programisty, musi być dana metoda zaimplementowana.
Inaczej traciło by sens używanie abstract.
mike
~kicaj wyjątki służą do obsługiwania wyjątkowego zachowania (związanego z nieoczekiwanym błędem) aplikacji podczas jej działania.
Twój błąd wynika (tak jak ~Sedziwoj napisał) z błędów programisty i aplikacja nawet się nie uruchomi (bądź nie skompiluje dyby to było coś poza PHP).
Żaden język Ci na to nie pozwoli.
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-2025 Invision Power Services, Inc.