Sub
Sonda

Jakiego języka programowania używasz ?






http://komtech.pl/.

Przyszłość Symfony
Pełną wersję artykułu można pobrać tutaj

 

Przyszłość Symfony

wersja 1.1 – prawdziwa rewolucja


W chwili kiedy piszę te słowa dostępna jest już wersja beta Symfony 1.1. Wydanie to jest swoistą rewolucją, więc warto przedstawić nowości, które się w nim pojawią.


Przyszłość Symfony
wersja 1.1 – prawdziwa rewolucja
W chwili kiedy piszę te słowa dostępna jest już wersja beta Symfony 1.1. Wydanie to jest swoistą rewolucją, więc warto przedstawić nowości, które się w nim pojawią.
Powinieneś wiedzieć:
• Co to jest Symfony;
• Jak działały walidatory, helpery oraz formularze w Symfony 1.0
Dowiesz się:
• Co nowego znajdzie się w wersji 1.1 frameworka Symfony.


Nowy framework zadań będzie zorganizowany wokół przestrzeni nazw. Będzie także dużo łatwiejszy w rozbudowie.
Porównanie przestrzeni nazw wybranych zadań znajduje się w Tabeli 1. Wbudowany zostanie także system pomocy.
Wyświetlmy dla przykładu pomoc do zadania plugin-install:
symfony help plugin:install.
Istotną nowością jest także możliwość wywołania zadania bezpośrednio z kodu aplikacji:
$task = new sfCacheClearTask($dispatcher);
$task->run();
Możemy tego dokonać dzięki oddzieleniu zadań od CLI (ang. command line interface).


Ograniczenie zależności i EventDispatcher


Symfony 1.1 zawiera mocno zmodyfikowaną strukturę klas podstawowych w porównaniu do wersji 1.0. Zmiany polegają przede wszystkim na usunięciu zależności oraz singletonów.
Struktura zależności wersji 1.0 i 1.1 została przedstawiona na Rysunku 1 i 2 odpowiednio.


Nowe formularze, widżety i walidacja


W kwestii powyższych zagadnień możemy mówić o zupełnie nowym podejściu. Podejście to opiera się na trzech filarach:
• widżety – sfWidget
• walidatory – sfValidator
oraz sfValidatorSchema
• formularze – sfForm
Każdy z nich stanowi oddzielny podsystem, w pełni niezależny od pozostałych. Przyjrzyjmy się im bliżej.


Widżety


Widżet jest obiektem, który może być renderowany jako kod HTML. Widżetów używamy w zastępstwie helperów. Stwórzmy teraz przykładowy widżet.
$w = new sfWidgetFormInput();
//tworzy nowy widżet typu input
echo $w->render(’first_name’, ‘Marcin’);
//wyświetla widżet
Zastosowanie takiej konstrukcji pozwoli nam uzyskać następujący znacznik HTML:
value=”Marcin” id=”first_name” />
Symfony 1.1 daje nam także do dyspozycji klasę sfWidgetFormSchema. Klasa ta reprezentuje grupę widżetów. Stwórzmy zatem dwa pola tekstowe odpowiadające imieniu oraz nazwisku:
$w1 = new sfWidgetFormInput();
$w = new sfWidgetFormSchema(array(‘first
_name’ => $w1,‘last_name’ => $w1,));
Zestaw taki wyświetlimy za pomocą polecenia:
$w->render(null, array('first_name'
=> 'Marcin', 'last_name' =>
'Świerczyński',));

 

 

Obiekty klasy sfWidgetFormSchema są obiektami klasy sfWidget, więc pozycją zestawu może być inny zestaw, co jest przedstawione na Listingu 1.


Walidatory


Walidatory służą do sprawdzania poprawności oraz „oczyszczania” wprowadzanych danych. Zobaczmy jak działają w praktyce (Listing 4).
Podobnie, jak w przypadku widżetów, walida tory możemy grupować (Listing 5). Jak widzimy, funkcji clean() musimy podać tablicę wartości, odpowiadających konkretnym polom.
Zestawy walidatorów również możemy zagnieżdżać, co przedstawia Listing 2.


Formularze


Formularze stanowią rodzaj spoiwa między widżetami, a walidatorami. Sercem formularzy jest klasa sfForm.
Klasa ta zapewnia nam dostęp do metod umożliwiających budowanie HTML-owych formularzy, obsługę walidacji ich pól, a także zapis i pobieranie danych – słowem całej funkcjonalności niezbędnej do budowania tych podstawowych elementów interakcji z użytkownikiem.
Stwórzmy zatem pierwszy formularz. Kod znajduje się na Listingu 3.
To właściwie wystarczy, aby wyświetlić formularz: echo $form. Możemy także wyświetlić jedynie imię autora.
W tym celu użyjemy konstrukcji echo $form['first_name'];, która zwróci następujący kod:
value="Marcin" id="first_name" />
Na szczególną uwagę zasługuje klasa sfFormPropel, która odpowiada za generowanie formularzy na podstawie obiektów Propela.
Dzięki niej może mapować typy danych z Propela na widżety i walidatory. Funkcjonalność ta dotyczy w szczególności kluczy obcych i relacji wiele-do-wielu.


Coś jeszcze?


Formularze, widżety, walidatory oraz modyfikacja architektury to chyba najważniejsze zmiany, jakie wprowadzono w wersji 1.1. Najnowsza edycja wniesie jednak masę drobniejszych poprawek i funkcjonalności.
Na pewno na uwagę zasługuje manager pluginów, który został napisany zupełnie od nowa. Zapewniać on będzie obsługę zależności między wtyczkami.
Poprawiono także integrację z Propelem. Został on włączony jako plugin do standardowego wydania frameworka. Od teraz deklarowanie zachowań będzie możliwe wprost ze schematu, który to z kolei będzie mógł być nadpisany przez inny.
Ponadto umożliwiono definiowanie danych testowych dla relacji wiele-do-wielu (w plikach fixtures).
Zmiany nie ominęły także mechanizmu routowania. Wprowadzono warstwę cache’ującą, co zapewni znaczny wzrost wydajności w przypadku serwisów z dużą ilością URLi do wygenerowania.

08/200876Narzędzia programistyczneW temacie cache’owania również możemy spodziewać się nowości. Umożliwiono wykorzystanie innych miejsc składowania cahce’a (np. Memcached), a także usunięcie cache’a z poziomu innej aplikacji, niż bieżąca.
Generalnie mechanizm cache’owania będzie można teraz zastosować nie tylko do warstwy widoku, ale też np. do warstwy modelu.
Zmiany w cache’owaniu wpłyną także na internacjonalizację aplikacji. Będzie ona teraz wykorzystywała te same techniki, co warstwa widoku, co zapewni dużo szybsze generowanie szablonów.
Ponadto nowe zadania umożliwią wyszukanie ciągów znaków niedostosowanych do internacjonalizacji, a także znalezienie nieprzetłumaczonych tekstów. Będą to symfony i18n:find i symfony i18n:extract odpowiednio.
Usprawniono także etap konfiguracji aplikacji. Zintegrowano lepszy parser YAML, a także zaimplementowano nowe, pomocne komunikaty o błędach w plikach YAML.


Mała rewolucja


Te wszystkie zmiany sprawiają, że nowe wydanie Symfony będzie pewną rewolucją. Kod frameworka został bardzo dopracowany. Podwojono także liczbę testów jednostkowych (z 4 do 8 tysięcy), co oznacza, że możemy tworzyć aplikacje w oparciu o nową wersję, mając właściwie pewność, że będą wydajne i bezpieczne.
Warto jeszcze zaznaczyć, że istniejące aplikacje, korzystające z rozwiązań wersji 1.0 można uruchamiać w trybie zgodności.
W tym celu musimy włączyć opcję compat_10 w pliku apps/nazwaAplikacji/config/settings.yml:
all:
.settings:
compat_10: on
Zapewne wielu programistów zdecyduje się na takie rozwiązanie w istniejących projektach, jednak nowopowstające aplikacje warto tworzyć w oparciu o mechanizmy zawarte w Symfony 1.1.

MARCIN ŚWIERCZYŃSKI
Autor jest współzałożycielem firmy TeamLab.pl, specjalizującej się w wytwarzaniu oprogramowania klasy enterprise. Studiuje w Polsko-Japońskiej Wyższej Szkole Technik Komputerowych w Warszawie. Interesuje się programowaniem (Java, PHP), bazami danych oraz projektowaniem stron internetowych.
Kontakt z autorem: marcin@swierczynski.net



sdjournal.org

http://isecman.org/

http://www.dragonia.pl/

http://www.tts.com.pl/

http://www.karierait.pl/