Blog (65)
Komentarze (803)
Recenzje (0)

Wzorowa podstawa

@tflWzorowa podstawa29.09.2011 16:07

Już dość dawno temu obiecałem tekst o frameworkach i wzorcach projektowych. Dziś mam odrobinę wolnego czasu, który poświęcę by spisać kilka informacji na ten temat. Może się komuś przyda?

Zacznę od wzorców projektowych*. W procesie tworzenia aplikacji (zwłaszcza internetowych, wyposażonych w interfejs i część coreową) ważne jest, by wybrać i konsekwentnie trzymać się pewnych założeń. Od najprostszych i najbardziej szczegółowych (nazywanie metod w języku angielskim, nazywanie ich w konkretny, czytelny sposób itd.) do tych najbardziej ogólnych (struktura katalogowa itd.). Na całe szczęście programowanie nie zostało wymyślone rok temu, wiele już zostało zrobione w tej dziedzinie. Wzorców projektowych nawet w PHP jest wiele, ale najlepiej (moim zdaniem) zacząć naukę poważnego projektowania od opanowania pisania w MVC.

Model-Controller-View

Wzorzec MVC nastawiony jest przede wszystkim na rozdzielenie powierzchni logicznej od tej dostępnej użytkownikowi. Dlatego utworzone na użytek wzorca zostały trzy pojęcia:

Model - czyli część aplikacji odpowiedzialna za komunikację z bazą danych. View - czyli część aplikacji odpowiedzialna za wyświetlanie interfejsu. Controller - czyli część aplikacji, która tak naprawdę służy do "porozumiewania" się wcześniejszych dwóch części.

Tak teoretycznie to naprawdę nie jest łatwe do wytłumaczenia. W praktyce okazuje się jednak dużo prostsze. Zacznijmy od teoretycznej struktury katalogów w aplikacji:

/.
 ..Model
______...htaccess
______..model.class.php
 ..View
______...htaccess
______..view.class.php
 ..Controller
______...htaccess
______..controller.class.php
 ..index.php
 ...htaccess

Z góry przepraszam, za skandaliczne formatowanie... Mam nadzieję, iż widać na powyższym... e... czymś, co powinno przypominać strukturę folderów, że aplikacja składa się z trzech folderów (Model, View, Controller) 4 plików typu .htaccess, 3 klas oraz jednemu plikowi index.php. Jak wygląda działanie aplikacji? Wywołanie index.php powoduje przekazanie do kontrolera danych w tablicy POST, COOKIE oraz GET (o samym gecie za chwilę). Kontroler na podstawie tych tablic wywołuje metody klasy model.class.php, które przekazują w odpowiedzi żądane dane z powrotem do kontrolera, a na ich podstawie kontroler ładuje odpowiednie metody z klasy widoku. Konkretniej?

Index.php zawiera (domyślnie) formularz logowania. Użytkownik loguje się, dane logowania otrzymuje kontroler. Odpowiednio je obrabia (sleshuje i przeprowadza inne operacje, które wykluczą próby włamania się do aplikacji), a następnie wywołuje metodę z klasy model auth_user(). Ta metoda przyjmuje dwa argumenty (login i hasło), a następnie zwraca TRUE lub FALSE, w zależności od poprawności danych wejściowych. Odpowiedź otrzymuje kontroler i uruchamia odpowiednie metody tym razem klasy widok. Załóżmy, że dane są poprawne - kontroler przekazuje uruchamia metodę show_site() z argumentem o loginie użytkownika. Metoda jest po prostu szablonem strony, z miejscem na ów nick. O tym czym są szablony były już na dobrychprogramach artykuły.

I to cała filozofia pracy w MVC. Teoretycznie wydawać się może, że pracy zgodnie z tym wzorcem jest więcej, niż pisząc wszystko "ciągiem". Tutaj, by zobaczyć wyniki prostego zdania trzeba grzebać w trzech klasach. Zysk widoczny jest jednak najbardziej, gdy rozszerzamy naszą aplikację lub "pożyczamy" kod do innej.

CodeIgniter

Teraz kolej na framework. Framework to po prostu gotowa i w sporym stopniu uniwersalna podstawa aplikacji. A dokładniej... a dokładniej to zbiór klas, które ułatwiają nam pisanie kodu. Po frameworku spodziewać się można gotowych klas do łączenia się z bazą danych, które za nas pamiętają o odpowiednim zabezpieczeniu danych wejściowych, tworzenia ciasteczek, czy wsparcia dla "koszyków sklepowych". Wszystko to bowiem zostało już kiedyś napisane i nie trzeba wynajdować od nowa.

Sam CodeIgniter przy pierwszym spotkaniu przypominał mi Zenda. Zend z drugiej strony jest przeogromnym, rozbudowanym do granic, ale za to także wszechstronnym frameworkiem. CI natomiast jest lekki, wydajny, również wszechstronny, ale przede wszystkim - bardzo prosty w opanowaniu. Dodatkowo posiada doskonały user guide, który zawiera dokładne opisy wszystkich metod, wraz z przykładami użycia. Na stronie projektu zobaczyć można również 30 minutowy film, na którym obserwować można stworzenie prostego (prostackiego wręcz) bloga. Film ten jednak demonstruje doskonale potencjał frameworka. Trzeba jednak przyznać, że filmy są dość stare i pokazują niektóre elementy, które zostały wycofane. Cóż to jednak za problem, skoro wikipedia projektu zawiera kilkadziesiąt różnych filmów instruktażowych.

Przyszła pora na powrót do tablicy GET. Programiści projektu CI wychodzą (z bardzo słusznego moim zdaniem) założenia, ze tablica GET to zło. Dlatego sugerują by w ogóle z niej zrezygnować. W zamian proponują (dzięki mod_rewrite) ciekawy, ale nie oryginalny sposób wywoływania żądań. Polega on na tym, że elementy adresu URL przekładane są na nazwy klas (a w zasadzie to nazw plików, które zawierają klasy o tej samej nazwie) controllera oraz metod tych klasy. To może przykład:

http://example.com/blog/show_articles

Wywołanie tego adresu spowoduje uruchomienie metody show_articles z klasy blog. Oczywiście część tych parametrów może zostać domyślnie załadowana. Framework posiada parametr zawierający domyślny controller. Dlatego można tak skonfigurować (żeby nie napisać - zaprogramować) framework by wywołanie adresu:

http://example.com/

spowodowało uruchomienie klasy blog i jej metody index().

Na sam koniec podaje linka do user guide frameworka CodeIgniter. Zawiera on wiele przydatnych informacji nie tylko o samym CI, ale także mnóstw cennych informacji dla wszystkich programistów (o samym MVC, o zasadach formatowania kodu i wiele innych). O tym wszystkim poczytacie tutaj.

*Piszę o PHP, nie dla wszystkich języków jest to przekładalne, ale dla sporej części tak

PS. Wyszło mi to jakoś tak... nijak.

Wybrane dla Ciebie
Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.