PHP/Czym jest framework?

Z Wikibooks, biblioteki wolnych podręczników.
< PHP
Skocz do: nawigacja, szukaj
Poprzedni rozdział: Ćwiczenia
Spis treści

Czym jest framework?[edytuj]

W tym rozdziale poznamy kolejną kategorię pakietów programistycznych zwanych frameworkami. Zadaniem frameworka jest dostarczenie szkieletu do tworzenia aplikacji (lub pewnej jej części), a także zbioru ogólnych funkcjonalności, które programista może rozszerzać, by dopasować je do konkretnych potrzeb. Framework może być rozumiany zatem jako szczególny przypadek biblioteki programistycznej, od której jednak odróżnia go kilka szczegółów:

  1. Odwrócenie sterowania - przepływ sterowania w aplikacji jest narzucany przez framework, nie przez programistę.
  2. Rozszerzalność - funkcjonalność frameworka może być rozszerzana przez programistę poprzez nadpisywanie lub dodawanie nowych elementów.
  3. Niemodyfikowalny kod - kod frameworka nie powinien być modyfikowany przez programistę podczas rozszerzania.

Przyjrzyjmy się, jak tworzyliśmy aplikacje WWW do tej pory. Dostawaliśmy do rąk język i musieliśmy samodzielnie zaprogramować całą strukturę aplikacji od początku. Nie chodziło tu tylko o napisanie kodu poszczególnych akcji, ale też rozwiązanie takich kwestii, jak moment ładowania konfiguracji, łączenie się z bazą danych, sposób generowania wynikowego kodu HTML itd. Zauważmy, że wymyślanie tego za każdym razem od nowa mija się z celem i jest wysoce nieefektywne. Przecież moglibyśmy wydzielić ogólną funkcjonalność, zapakować ją w zbiór funkcji i klas, a później na jej podstawie tworzyć kolejne aplikacje. Jeśli dokonaliśmy takiego podziału, brawo - stworzyliśmy właśnie framework.

Oczywiście taki framework byłby prawdopodobnie dość prymitywny, ale od strony technicznej spełnia wszystkie cechy tego rodzaju pakietów. Mamy ogólną funkcjonalność związaną z komunikacją z bazami danych czy obsługą formularzy, którą następnie dostosowujemy do potrzeb konkretnej aplikacji. Przepływ sterowania, czyli mechanizm wykonywania akcji, też najczęściej zaszyty będzie we wnętrzu frameworka. Możemy pójść jednak o krok dalej, przeanalizować strukturę istniejących aplikacji i zaprojektować framework od zera już jako framework, a nie jako pochodna procesu tworzenia aplikacji. I faktycznie - dla PHP istnieje wiele gotowych frameworków, które wystarczy ściągnąć i zastosować. To właśnie jest powodem ich wyjątkowej popularności. Firmy informatyczne nie muszą wydawać pieniędzy na opracowywanie autorskich rozwiązań, lecz po prostu mogą użyć dobrze zaprojektowane i przetestowane frameworki. Co więcej, oszczędzają w ten sposób pieniądze na szkoleniu nowych pracowników. Wystarczy w ogłoszeniu o pracę napisać, że wymagana jest znajomość frameworka XXX i nowy programista może niemal od razu zacząć pracę.

Co wchodzi w skład typowego frameworka?[edytuj]

Mamy już ogólne pojęcie, czym framework jest i czym nie jest, pora zatem zastanowić się, w czym może nas framework wyręczyć. Podstawowe elementy większości frameworków to:

  1. Mechanizm uruchamiania i przetwarzania akcji.
  2. Mechanizm tworzenia logiki biznesowej aplikacji.
  3. Zarządzanie konfiguracją.
  4. Zarządzanie komunikacją z bazą danych.
  5. Obsługa formularzy.
  6. System szablonów.
  7. Obsługa błędów.
  8. Mechanizmy bezpieczeństwa, uwierzytelniania i kontroli dostępu.
  9. Generatory kodu.

Dlaczego powinienem używać frameworka?[edytuj]

Framework to gotowe komponenty do budowy aplikacji WWW zaprojektowane przez doświadczonych programistów. Są one dobrze udokumentowane i dzięki temu łatwe w użyciu. Jako programista oszczędzasz czas na przysłowiowe "wymyślanie koła od nowa", ponieważ jedyne co musisz zrobić, to nauczyć się nimi posługiwać i możesz skupić się w całości na budowaniu aplikacji.

Ponadto dzięki ogólnej dostępności frameworków, programuje w nich wielu ludzi. Nowy programista w zespole, który umie korzystać z frameworka, na którym pracujesz, bez większych problemów zrozumie już napisany kod i będzie mógł od razu rozpocząć w nim pracę. Autorskie rozwiązania, zwłaszcza pisane przez początkujących, pełne są poważnych błędów projektowych i trudne w analizie, przez co przejęcie do dalszego rozwoju takiej aplikacji to koszmar.

Dlaczego nie powinienem używać frameworka?[edytuj]

W przypadku większości typów aplikacji WWW nie ma żadnych przeciwwskazań do korzystania z gotowych frameworków. Mają one wszystko czego potrzeba i są dobrą szkołą programowania. Zdecydowana większość frameworków WWW napisanych w PHP (i nie tylko) działa według jednego i tego samego schematu, a różnice są minimalne. Problem pojawia się dopiero wtedy, gdy ten schemat z jakiegoś powodu nam nie odpowiada, ponieważ prawdopodobnie nie znajdziemy wtedy niczego, co spełniałoby nasze potrzeby.

Ogólnie mówiąc, sytuacja wygląda identycznie, jak z systemami szablonów i bibliotekami ORM. Aby napisać dobry framework, potrzebny jest czas i doświadczenie. Aby napisać dobry framework, który nie byłby powielaniem tego, co już zostało napisane, potrzebna jest dodatkowo kreatywność oraz umiejętność planowania. Te kryteria spełnia niewiele zespołów projektowych, dlatego lepiej jest nauczyć się korzystać z gotowych projektów.

Podsumowanie[edytuj]

W następnym rozdziale poznamy złożone wzorce projektowe MVC, MVP oraz ich pochodne. Są one podstawą działania większości frameworków i dlatego ich zrozumienie jest niezbędne. Następnie napiszemy prosty, minimalistyczny framework oparty o wzorzec MVC, aby pokazać w praktyce zasadę jego działania, zaś na końcu omówimy trzy wybrane frameworki PHP i pokażemy, jak za ich pomocą zbudować blog internetowy.