![]() |
![]() ![]() |
![]() |
![]()
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:
Jest to mozliwe? -------------------- PHP Developer
"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Stale sa w interfejsach jak najbardziej mozliwe w PHP5 - tak trudno sprawdzic ? ; )
Ten post edytował NuLL 5.08.2007, 23:12:48 -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Niedziala... Niechce ustawiac wartosci "STALEJ" w interfejsie, ale chce wymusic jej istnienie w "jakisController" Jest to mozliwe? -------------------- PHP Developer
"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Stala to stala misiu
![]() ![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
No to moze jakas inna propozycja tego rozwiazania?
-------------------- PHP Developer
"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
stałe i zmienne w interfejsie... to nie jest możliwe. Być może czegoś nie doczytałem, ale interface jest po prostu abstrakcją zawierające tylko informacje o abstrakcyjnych metodach, które muszę się znaleźć w klasie, która ma dany zaimplementowany. Tam nic nie definiujesz. Jeśli się mylę proszę mnie uświadomić!Poza tym napisz jakie chciałbyś tego wykorzystanie... może wtedy się znajdzie jakieś
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
abstract
-------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
kicaj: to jest bez sensu, skoro kazda klasa implementujaca ten interfejs moze do stalej przypisac dowolna wartosc to oznacza ze ta stala ma zmienna wartosc gdy kozystasz z polimorfizmu. Uzyj np, metody getStalaWartosc() i moga ci zwracac rozne wartosci
-------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Dlaczego bezsensu? Jezeli w interfejsie wymuszamy istnienie metod, to dlaczego nie mozemy wymusic skladowych (tutaj akurat stalej). Interfejs jest jak "szablon" wymaga na klasie implementujacej danych metod (a ja chcialbym miec stala wymuszona w klasach implementujacych)
Rozumiem ze to niemozliw i musze sobie jakos z tym inaczej poradzic:/ -------------------- PHP Developer
"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 8.02.2007 Ostrzeżenie: (10%) ![]() ![]() |
O.o
Przecież interfejs narzuca tylko odpowiednie metody... Implementacja ich w różnych klasach może się różnić. Tak więc bez sensu by było wrzucanie stałej w interfejs bo to stała, jak sama nazwa wskazuje ;-) Jak chcesz coś takiego to klasa abstrakcyjna. -------------------- Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
methoda getCos() która zwraca to co ma być w "stałej"
-------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]()
Post
#12
|
|
![]() 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.
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 -------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat Dlaczego bezsensu? Jezeli w interfejsie wymuszamy istnienie metod, to dlaczego nie mozemy wymusic skladowych (tutaj akurat stalej). Interfejs jest jak "szablon" wymaga na klasie implementujacej danych metod (a ja chcialbym miec stala wymuszona w klasach implementujacych) Nie wiem, czy porównanie interfejsu do szablonu jest zbyt dobrym pomysłem. Interfejs określa operacje, które możesz wykonywać na obiekcie implementującym go. Składowe nie mają nic wspólnego z interfejsem obiektu - raczej określają jego stan. Stałe to już kompletnie inna bajka. Stała jest stałą, reprezentuje coś, co się nie zmienia. Cechy obiektów powinny być zwracane przez odpowiednie akcesory. -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 05:28 |