Invenzzia » Zasoby / Artykuły / Piszemy galerię zdjęć... / Wprowadzenie

1. Wprowadzenie

Doctrine

Dla wielu skryptów i aplikacji komunikacja z bazą danych odbywająca się za pomocą najprostszych funkcji i ręcznie utworzonych zapytań to zbyt mało. Zarządzanie kodem źródłowym takiej aplikacji może stanowić problem, szczególnie gdy będziemy pragnęli dodać nową funkcjonalność, a później dodać ją do już funkcjonującej wersji produkcyjnej. Do tego dochodzą problemy natury użytkowej. Z pomocą przychodzą nam tutaj systemy ORM (Object-Relational Mapping), które odwzorowują wewnętrzną strukturę bazy danych na klasy i obiekty danego języka programowania, umożliwiając prostą i intuicyjną manipulację wierszami. Jednym z takich systemów dla PHP5 jest biblioteka Doctrine oferująca programiście szeroką gamę możliwości. Tutaj wymienimy tylko kilka z nich:

  1. Struktura bazy definiowana w plikach YAML – są one czytelne, niezależne od konkretnego systemu bazodanowego i łatwo poddają się umieszczeniu w systemie kontroli wersji (np. SVN).

  2. Generator modeli – klasy odpowiadające poszczególnym tabelom bazy mogą zostać w prosty sposób wygenerowane automatycznie na podstawie pliku YAML.

  3. Generator struktury bazy danych – Doctrine potrafi automatycznie wgrać do bazy odpowiednią strukturę, korzystając z plików YAML.

  4. Narzędzie migracyjne – ułatwia migrację już istniejącej bazy danych do nowej wersji bez utraty już zawartych w niej informacji.

  5. Język DQL (Doctrine Query Language) – nakładka na SQL umożliwiająca proste korzystanie z modeli w zapytaniach.

  6. Wbudowane wsparcie dla zaawansowanych struktur takich, jak drzewa.

  7. Narzędzia do cache'owania oraz pracy z transakcjami.

Doctrine korzysta ze standardowego interfejsu bazodanowego PDO wbudowanego w PHP od wersji 5.1 rozszerzonego o dodatkową funkcjonalność i można w nim pracować na wszystkich systemach bazodanowych, jakie obsługuje ten sterownik. W modelu MVC Doctrine pracuje po stronie warstwy modelu.

Open Power Template 2

W rozbudowanych skryptach istotną rolę odgrywa również warstwa prezentacji (widoku) zajmująca się wyświetlaniem danych wygenerowanych lub przetworzonych przez skrypt. Stanowi ona najczęściej osobną część, zaś powszechnie wykorzystywaną techniką do osiągnięcia tego jest użycie szablonów, czyli plików z kodem HTML i wstawkami w jakimś języku wyższego poziomu mówiącymi, gdzie co ma zostać umieszczone. Open Power Template 2 jest systemem szablonów zapewniającym kompleksową obsługę warstwy prezentacji. Składa się z obiektowego interfejsu programistycznego oraz opartego o XML języka tworzenia szablonów. Niektóre z możliwości biblioteki:

  1. Kontrola składni dokumentu (prawidłowość domknięć znaczników itd.) już na poziomie serwera.

  2. Deklaratywne tworzenie szablonów: określasz, co chcesz uzyskać, a nie – jak ma to działać (w przeciwieństwie np. do czystego PHP czy Smarty).

  3. Szereg wysokopoziomowych elementów pomagających np. w budowie formularzy, obsłudze wielojęzyczności, wyświetlania wszelkiego rodzaju list czy składania wynikowego dokumentu z wielu mniejszych szablonów.

  4. Niezależność szablonów od typów danych przesyłanych ze skryptu – umożliwia to łatwiejsze wykorzystanie tego samego kodu w wielu miejscach tego samego projektu, a nawet wielu innych projektach.

  5. Obiektowy nie tylko z nazwy interfejs programistyczny wzorowany na rozwiązaniach spotykanych we frameworkach.

Aby zapewnić optymalną wydajność, biblioteka kompiluje wcześniej szablony do postaci prostych skryptów PHP, starając się przetworzyć możliwie jak najwięcej elementów już na tym etapie. W modelu MVC OPT zapewnia obsługę warstwy widoku.

Jak czytać ten artykuł?

Głównym celem tego artykułu jest pokazanie możliwości bibliotek Doctrine i Open Power Template, zaś galeria zdjęć jest tylko przykładowym projektem potrzebnym do jego osiągnięcia. Z tego powodu nie skupiam się tutaj na takich sprawach, jak skalowanie zdjęć, czy stworzenie zaawansowanego systemu obsługi formularzy. Rzeczy mniej istotne, ze względów objętościowych, musiały zostać celowo pominięte, aby nie zamazać obrazu całości. Pełen kod znajdziesz w dołączonym do artykułu archiwum TAR.GZ. Wszystkie występujące w nim klasy i metody zostały odpowiednio skomentowane i objaśnione, dzięki czemu jego lektura jest także pouczająca. W artykule poruszanych jest dość dużo zagadnień, dlatego myślę, że najlepiej czytać jest go po kawałku, stopniowo przyswajając kolejne porcje wiedzy, i przede wszystkim – eksperymentować!

Sama galeria zdjęć ma bardziej charakter edukacyjny. Chociaż jej kod udostępniony jest na liberalnej licencji X11, z przyczyn technicznych nie powinien on być stosowany do celów produkcyjnych!