Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> get_class_methods i abstract
kicaj
post 17.08.2007, 15:46:23
Post #1





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


Funkcja get_class_methods() zwraca tablice metod z podanej klasy, jak dowiedziec sie ktore sa metodami abstrakcyjnymi?


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
NoiseMc
post 17.08.2007, 16:30:04
Post #2





Grupa: Zarejestrowani
Postów: 398
Pomógł: 10
Dołączył: 24.11.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Moze sprobuj pokombinowac z tym. Prawde mowiac nie wglebialem sie w refleksje w PHP ale wydaje mi sie ze mogloby Ci to pomoc.


--------------------
Go to the top of the page
+Quote Post
kwiateusz
post 17.08.2007, 19:32:47
Post #3


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




  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. ?>
Go to the top of the page
+Quote Post
kicaj
post 17.08.2007, 19:56:49
Post #4





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


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?

Ten post edytował kicaj 17.08.2007, 19:58:43


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
kicaj
post 20.08.2007, 01:19:02
Post #5





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


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?


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
kicaj
post 23.08.2007, 11:55:39
Post #6





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


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?


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
Sedziwoj
post 23.08.2007, 13:10:31
Post #7





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
mike
post 23.08.2007, 13:15:46
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


~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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 09:13