Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ocena kodu OOP - rozwiazania, Prosze o uwagi do implementacji koszyka wg zadanego interfejsu
Lechus
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 4.02.2014

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


Szanowni profesjonaliści,

Proszę, w wolnej chwili, o przejrzenie kodu i udzielenie cennych wskazówek jak ten kod można ulepszyć.

Kod na Githubie

Plik READ ME.txt - tu jest opis co miało być zaimplementowane.
Instrukcja implementacji interfejsu
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Trochę większy przykład:
  1. class MyService {
  2. protected $container;
  3.  
  4. public function __construct($container) {
  5. $htis->container = $container;
  6. }
  7.  
  8. public function doSth() {
  9. ...
  10. $mailer = $this->container->get('my.mailer.service');
  11. $mailer->doSth();
  12. }
  13.  
  14. public function doSthElse() {
  15. ...
  16. $repo = $this->container->get('my.repo');
  17. $obj = $repo->create(..);
  18.  
  19. ...
  20.  
  21. $repo->save($obj);
  22. }
  23. }
1. Tutaj na dobrą sprawę w ogóle nie mamy właściwie DI. Co prawda sam kontener zależności jest przekazywany w sposób typowy dla DI, ale nie on nas tutaj interesuje.
2. Jakie zależności ma obiekt typu MyService? Nie wiadomo.
3. Czy da się napisać testy dla czegoś takiego? Da. Ale w strasznie niewygodny sposób.
4. Czy utworzę dwa obiekty klasy MyService korzystające z dwóch różnych mailerów? Jak się odpowiednio wygimnastykuję to może tak. Zamiast prostego:
  1. $realService = new MyService($mailer, $repo);
  2. $dummyService = new MyService(new DummyMailer(), $repo);
Muszę robić jakieś cuda w postaci klonowania całego kontenera, ustawiania mu jednego innego serwisu i przekazywania dopiero tego do MyService. A i tak cholera wie czy to w ogóle dalej będzie działało.

To tak na szybko...

Cytat
W podobny sposób używa się większości kontenerów IoC... przynajmniej w framewrokach PHP.
Raczej zawsze odradza się bezpośrednie korzystanie z kontenera. Jedynie wewnątrz kontrolerów jest to nagminnie "promowane". Ale jest to jeszcze raczej akceptowane ze względu na to, że kontrolery są pod tym względem na tyle specyficzne, że często jest to zwyczajnie w świecie bardziej opłacalne. Pamiętajmy, że ostatecznie te techniki mają nam pomóc, a nie być sztuką dla sztuki. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Posty w temacie
- Lechus   Ocena kodu OOP - rozwiazania   17.04.2014, 08:09:44
- - matix   No witaj, Na szybko, co zauważyłem (wieczorem dok...   18.04.2014, 11:06:55
- - skowron-line   - echo w metodzie - addItem zmien na add i niech z...   18.04.2014, 11:54:15
|- - Dejmien_85   Cytat(skowron-line @ 18.04.2014, 12...   18.04.2014, 23:05:46
- - viking   Cytat(matix @ 18.04.2014, 12:06:55 ) ...   19.04.2014, 06:47:53
|- - Dejmien_85   Cytat(viking @ 19.04.2014, 07:47:53 )...   19.04.2014, 09:27:24
- - destroyerr   @viking ale namieszałeś. Odnośnie przejmowania wię...   19.04.2014, 09:17:13
- - viking   @destroyerr To co pokazałeś to zwykłe rzutowanie t...   19.04.2014, 16:37:43
- - destroyerr   To właśnie mój kawałek kodu pokazuje czym jest DI....   19.04.2014, 19:06:42
- - Crozin   @viking: Trochę Cię zmartwię. To o czym piszesz to...   19.04.2014, 19:11:32
- - viking   To o czym piszę jest dokładnie implementacja DI we...   19.04.2014, 21:41:12
- - destroyerr   Ale Ty piszesz o implementacji kontenera/menedżera...   19.04.2014, 22:41:00
- - viking   Zdaję sobie sprawę że przydałby mi się urlop i moj...   20.04.2014, 06:24:34
- - Crozin   @viking: Jeszcze raz, wyjaśnijmy sobie proszę bard...   20.04.2014, 09:00:07
- - viking   W porządku. Jeśli potraktować sprawę w ten sposób ...   20.04.2014, 09:40:36
- - Crozin   Cytat[...] Jednak idei nie wprowadzimy w aplikacji...   20.04.2014, 10:06:56
- - JacekJagiello   Corzin, piszesz, że zapis typu: [PHP] pobierz, pla...   21.04.2014, 18:53:33
- - Crozin   Trochę większy przykład:[PHP] pobierz, plaintext c...   22.04.2014, 14:23:23
- - JacekJagiello   Właśnie, takie użycie kontenera rozpatrywałem w ko...   23.04.2014, 22:24:06
- - Ormin   Cytat(JacekJagiello @ 23.04.2014, 23:24...   25.04.2014, 15:20:56


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: 21.10.2025 - 15:36