Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dostęp do obiektu jak do stałej
croc
post
Post #1





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Witam,

mam prostą klasę Color zawierającą składowe koloru: red, green, blue. Obiekt tworzy się następująco:
  1. $color = new Color(255, 123, 0);

Chciałbym stworzyć łatwy dostęp do podstawowych kolorów. Czy jest jakiś sposób, by taki zapis:
  1. $color = Color::RED;

Zwracał new Color(255, 0, 0)? A może ktoś ma lepszy pomysł na dostęp do podstawowych kolorów?
Go to the top of the page
+Quote Post
-=Peter=-
post
Post #2





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


W php do stałym można jedynie przypisać wartości skalarne. Rozwiązaniem Twojego problemu będzie zbiór metod fabrycznych. Przykład użycia:

  1. $color = Color::getRed();


Metody te możesz zaimplementować w taki sposób, aby zawsze dana metoda zwracała ten sam obiekt, a nie tworzyła nowych (wzorzec flyweight).
Go to the top of the page
+Quote Post
croc
post
Post #3





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Dzięki. Nie podoba mi się jednak idea osobnych metod, wydaje mi się to dość sztuczne. Może jednak:
  1. $red = Color::get('RED');

?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
. Może jednak:
[PHP] pobierz, plaintext
$red = Color::get('RED');

?
Dziwne pytanie. Broni ci ktoś tak zrobić?
Go to the top of the page
+Quote Post
croc
post
Post #5





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Nikt mi nie broni (IMG:style_emoticons/default/smile.gif) Chciałbym się dowiedzieć jak Wy byście to rozwiązali. Tworzę sobie klasę-nakładkę do GD i ciekaw jestem jaka jest najlepsza metoda na rozwiązanie tego problemu.
Go to the top of the page
+Quote Post

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: 17.09.2025 - 11:43