Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> interfejs a skladowe
kicaj
post
Post #1





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

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


Projektujac klase implementujaca interfejs musi ona zawierac metody takie jak w interfejsie.
Czy jest taka mozliwosc abym wymusil na klasie zdefiniowanie zmiennej skladowej?

Dokladnie chodzi mi o to abym w kazdej klasie ktora implementuje interfejs byla zdefioniowana stala:
  1. <?php
  2. interface jakisInterface
  3. {
  4. const STALA;
  5.  
  6. function jakasMetoda();
  7. }
  8.  
  9. class jakisController implements jakisInterface
  10. {
  11. const STALA = 'wartosc';
  12.  
  13. function jakasMetoda()
  14. {
  15. // ...
  16. }
  17. }
  18. ?>

Jest to mozliwe?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
NoiseMc
post
Post #2





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

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


W interfejsie nie mozesz deklarowac zmiennych, jezeli deklarujesz stala to musisz jej wprzypisac wartosc juz w interfejsie, a jezeli chcesz wymusic na jakims zestawie klas zeby w implementacji okreslac wartosc skladowej to sprobuj uzyc klasy abstrakcyjnej.
  1. <?php
  2. interface JakisInterface
  3. {
  4. public function jakasMetoda ();
  5. }
  6.  
  7. abstract class AbstractController implements JakisInterface 
  8. {
  9. protected $skladowa;
  10.  
  11. public abstract function setSkladowa ($value);
  12. }
  13.  
  14. class JakisController extends AbstractController
  15. {
  16. public function setSkladowa ($value)
  17. {
  18. $this->skladowa = $value;
  19. }
  20.  
  21. public function jakasMetoda ()
  22. {
  23. // Implementacja metody narzuconej przez JakisInterface
  24. }
  25. }
  26. ?>

Kombinowalem jeszcze troche z deklowaniem zmiennych jako abstrakcyjne ale:
Cytat
Properties cannot be declared abstract
Interfaces may not include member variables


Ten post edytował NoiseMc 10.08.2007, 14:20:02
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 2.10.2025 - 22:57