Posts Tagged ‘Symfony’

Dependency Injection: Tworzenie usług z użyciem Buildera


18 lut
{lang: 'pl'}

symfony2W poprzednim rozdziale nauczyliśmy się używać klasy sfServiceContainer w celu zapewnienia przejrzystrzego interfejsu dla kontenera usług. W tym rozdziale, pójdziemy o krok dalej i nauczymy się używać klasy sfServiceContainerBuilder do opisu usług i ich konfiguracji w czystym PHP.

Klasa sfServiceContainerBuilder rozszerza klasę sfServiceContainer i umożliwia developerowi na opisywanie usług dzięki przejrzystemu interfejsowi.

Wszystkie klasy kontenera współdzielą ten sam interfejs, zdefiniowany w sfServiceContainerInterface:

Wejdź na stronę z postem, żeby zobaczyć podgląd kodu źródłowego.

Opisy usług wykonywane są poprzez rejestrację definicji usług. Każda definicja usługi opisuje usługę: od klasy jakiej używa, poprzez argumenty do przekazania konstruktorowi obiektu do innych właściwości konfiguracyjnych.

Dependecy Injection: Symfony – Kontener Usługi


04 lut
{lang: 'pl'}

symfony2

Do tej pory mówiliśmy o ogólnych pojęciach. Dwa wprowadzające rozdziały były bardzo ważne dla lepszego zrozumienia implementacji, o której będziemy wspominać w tym i w kolejnych rozdziałach. Nadszedł czas, aby zanurzyć się w komponent Kontenera Usługi Symfony.

Kontener Dependency Injection w Symfony zarządzany jest przez klasę o nazwie sfServiceContainer. Jest to bardzo lekka klasa implementująca podstawowe cechy o których wspominaliśmy w poprzednich artykułach.

W języku Symfony, usługą jest każdy obiekt zarządzany przez kontener. W przykładzie z Zend_Mail z poprzedniego rozdziału, mieliśmy dwie usługi: usługę mailer oraz mail_transport:

Wejdź na stronę z postem, żeby zobaczyć podgląd kodu źródłowego.

Jeśli klasę Container odziedziczymy po klasie sfServiceContainer uprości nam to nieco kod:

Dependecy Injection: Kontenery Dependency Injection


25 sty
{lang: 'pl'}

symfony2Kolejny rozdział tłumaczenia komponentu Dependency Injection. Tym razem zapoznamy się ze światem kontenerów DI, a także zobaczymy w jaki sposób kontenery wpływają na jakość późniejszego utrzymywania wieloobiektowego kodu. Zapraszam.

Przed zanurkowaniem w świat kontenerów Depenedency Injection zaryzykujmy śmiałym stwierdzeniem:

Przez większą część czasu używania DI nie będziesz potrzebował używać w tym celów kontenerów.

Lecz kiedy będziesz musiał zarządzać znaczną ilością oiektów z wieloma zależnościami, kontenery DI okażą się niezwykle pomocne ( np. przy budowie frameworka ).

Jeśli pamiętasz przykład z pierwszego rozdziału, tworzony obiekt User wymagał wcześniejszego utworzenia obiektu SessionStorage. Nic wielkiego, ale jednak, przed stworzeniem nowej instancji musisz pamiętać o wszystkich zależnościach wymaganych przez ten obiekt.

Dependency Injection: Czym jest jest Dependency Injection?


16 sty
{lang: 'pl'}

symfony2Symfony2 tuż za rogiem, więc wpadłem na pomysł żeby zabrać się za tłumaczenie dokumentacji ( wydanej na licencji Creative Commons Attribution-Share Alike 3.0 Unported License. ) podstawowego komponentu na którym bazuje nowa wersja frameworka – Dependecy Injection. Przy moim poziomie znajomości angielskiego zapewne nie wyjdzie zbyt rewelacyjnie. Dlatego uwagi piszcie w komentarzach. Tłumaczenie starałem się przystosować do „polskich realiów” (cokolwiek miałoby to znaczyć), więc nie jest do końca wierne oryginałowi.

Czym jest Dependency Injection?

Dependecy Injection nie jest powszechnym pojęciem w świecie PHP, rozdział ten przedstawi czym jest DI wykorzystując w tym celu „czysty” PHP.

Tworzenie nowego projektu w Symfony2 PR


14 sty
{lang: 'pl'}

symfony2Już niedługo (prawdopodobnie w pierwszej połowie marca) światło dzienne ujrzy stabilna wersja frameworka Symfony2. Już dziś nowe Sf dostępne jest jako wersja poglądowa, na której całkiem zgrabnie można ćwiczyć.

Najprostszym sposobem, aby rozpocząć przygodę z nowym Sf jest skorzystanie z sandboxa czyli prekonfigurowanej wersji frameworka. Jednak wybór tej metody powoduje pewne trudności w aktualizowaniu źródeł (i zależności) z repozytorium git’a jak i pracę z tym SCM’em. Ja preferuję podejście ręcznego utworzenia nowego projektu, który spokojnie można sobie rozwijać na githubie :).

Przygotowanie środowiska

Najpierw należy pobrać i zainstalować źródła bootstrap’era symfony. Logujemy się jako root:

[B]log programistyczny

IP 38.107.179.242 (38.107.179.242)