Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Interfejs] metody abstrakcyjne, Zapis w interfejsie, czy dopiero w klasie ?
Reigon
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 19.10.2004

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


Ostatnio wglebiam sie w tajniki OOP w PHP5, mam ambitny cel napisac aplikacje implementujaca wzorzec MVC i mam na to 2 miesiace. Mam nadzieje, ze mi sie uda ;p W kazdym badz razie korzystam z ksiazki "PHP 5 Zaawansowane programowanie" i materialow tu i tam znalezionych w sieci. Postanowilem sobie przerobic srednio-zaawansowany przykladzik z rozdzialu 3, no i napotkalem na taki problem:

W ksiazce jest interfejs:
  1. <?php
  2.  interface Validator {
  3.  abstract function validate();
  4.  }
  5. ?>


Czy w interfejsach powinno sie w ogole definiowac metody abstrakcyjne ? Przeciez one same w sobie takie moga byc pozniej juz w implementacji danej klasy - jezeli zadeklarujemy klase jako abstract.

I dalej w ksiazce jest klasa PropertyObject abstrakcyjna, bo nie ma zaimplementowanej funkcji validate, a np. klasa Entity dziedziczaca po PropertyObject juz nie jest abstrakcyjna (mimo, ze w implementacji metody validate() jest tylko komentarz - czy sprawia on, ze dzieki temu komentarzowi jest juz implementacja (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ? ).

Dziwna sprawa, w kazdym badz razie to nie dziala i wywala:

Fatal error: Access type for interface method Validator::validate() must be omitted in ....

Jak zamienilem abstract na public, to smiga... Blad w ksiazce, czy ja zle mysle ?

Ten post edytował Reigon 13.03.2007, 21:59:09
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 17:51