Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Statyczne klasy vs Dependency Injection
Inscure
post
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 4
Dołączył: 18.09.2010

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


Pracując na projektem pisanym obiektowo, natknęliśmy się na problem korzystania z metod jednej klasy w drugiej.

Dyskutując na ten temat, odrzuciliśmy tworzenie obiektu innych klas wewnątrz danej klasy, czyli:

  1. class User
  2. {
  3. function __construct($sessionName)
  4. {
  5. $this->storage = new SessionStorage($sessionName);
  6. }
  7.  
  8. // ...
  9. }
  10.  
  11. $user = new User('SESSION_ID');



Zostały dwa sposoby, podane w nazwie tematu.
Małe wyjaśnienie odnośnie klas statycznych: jak pewnie większość się domyśla, chodzi o pisanie metod statycznych i korzystanie z nich w innej klasie w sposób następujący: Klasa::metoda();
W związku z tym zwracam się do Was z prośbą o wyrażenie opinii, z czego byście wy skorzystali i dlaczego.

Ja osobiście jestem za Dependency Injection znanego z Symfony, ale trzeba jakoś innych przekonać ;]

Ten post edytował Inscure 6.05.2011, 19:56:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Bags_Bunny
post
Post #2





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Po raz kolejny spotykam się z brakiem zrozumienia semantyki słowa klasa. "Klasa", w której wszystko jest statyczne nie jest klasą, tylko przestrzenią nazw. Chyba jedyną różnicą miedzy tego typu zbiornikiem, a typową przestrzenią nazw jest możliwość dziedziczenia, choć i to da się zasymulować w przypadku zwyczajnych przestrzeni nazw.

Co więcej, jakie wg. Ciebie "klasa" statyczna ma zalety względem tworzenia obiektów w innych obiektach? Ja nie widzę żadnych.

DI daje wspaniałą, niemalże nieograniczoną, elastyczność. Po co sobie na siłę życie komplikować?
Go to the top of the page
+Quote Post
Inscure
post
Post #3





Grupa: Zarejestrowani
Postów: 61
Pomógł: 4
Dołączył: 18.09.2010

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


Cytat(Bags_Bunny @ 6.05.2011, 21:54:01 ) *
Po raz kolejny spotykam się z brakiem zrozumienia semantyki słowa klasa. "Klasa", w której wszystko jest statyczne nie jest klasą, tylko przestrzenią nazw.

Co więcej, jakie wg. Ciebie "klasa" statyczna ma zalety względem tworzenia obiektów w innych obiektach? Ja nie widzę żadnych.


Jakbym zaczął pisać o przestrzeni nazw to nie każdy by kojarzył o co mi chodzi, a ja to odniosłem tylko do kodu zawartego miedzy class Nazwa {} (IMG:style_emoticons/default/smile.gif)

Odpowiadając na pytanie: przecież DI to nie jest tworzenie obiektu w obiekcie, tylko wstrzykiwanie już utworzonego obiektu. A jeśli chodziło Ci o przykładowy kod, który podałem, to podkreśliłem nawet, że tą opcję odrzuciliśmy na samym początku (IMG:style_emoticons/default/wink.gif)
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: 18.10.2025 - 00:12