Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00251 007760 10468038 na godz. na dobę w sumie
Wzorzec MVC w PHP dla profesjonalistów - książka
Wzorzec MVC w PHP dla profesjonalistów - książka
Autor: Liczba stron: 432
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-7015-4 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> php - programowanie
Porównaj ceny (książka, ebook, audiobook).

W dobie aplikacji internetowych wzorzec MVC jest jednym z najpowszechniej używanych. Pozwala on utrzymać aplikację w ryzach i sprawić, że jej konserwacja nie nastręcza zbyt wielu problemów. U podstaw MVC leży podział aplikacji na trzy warstwy - modelu, widoku i kontrolera (ang. Model View Controller). Wzorzec ten jest obecnie wykorzystywany praktycznie w każdym języku programowania.

Dzięki tej książce zrozumiesz, jak z niego korzystać w aplikacji pisanej przy użyciu języka PHP. W trakcie lektury poznasz jego zalety oraz zobaczysz, jak zacząć tworzenie aplikacji opartej o MVC. W kolejnych rozdziałach zagłębisz się w szczegóły konfigurowania, trasowania, tworzenia modeli oraz wykorzystywania baz danych. Ponadto zdobędziesz dogłębną wiedzę na temat testowania aplikacji - to klucz do tworzenia niezawodnych systemów. W tej książce znajdziesz również opis popularnych szkieletów wspierających MVC: Zend Framework i CakePHP to tylko niektóre z nich. Książka ta jest obowiązkową lekturą dla każdego programisty aplikacji internetowych korzystającego z języka PHP.

Dzięki tej książce:

Twórz elastyczne i niezawodne aplikacje internetowe!


To publikacja skierowana do osób, które znają podstawy języka PHP, ale nie miały jeszcze do czynienia z bardziej zaawansowanymi technikami wytwarzania oprogramowania.

Warto dodać, że każdy rozdział rozpoczyna się od przedstawienia jego celu. Na końcu rozdziałów znajdziemy krótkie podsumowania zawierające pytania oraz dodatkowe ćwiczenia.

To świetne źródło wiedzy dla każdego programisty, który chce udoskonalić swoje umiejętności w zakresie tworzenia architektury aplikacji oraz programowania obiektowego. Książka jest napisana w bardzo przemyślany sposób, autor wyczerpująco omawia zagadnienia, przedstawia najlepsze praktyki i rozwiązania. Jeżeli chcesz być lepszym programistą, to pozycja obowiązkowa w Twojej domowej biblioteczce.


Adrian Piętka, senior software developer
Future Processing

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Pro PHP MVC Tłumaczenie: Łukasz Piwko ISBN: 978-83-246-7015-4 Original edition copyright © 2012 by Chris Pitt. All rights reserved. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Polish edition copyright © 2013 by HELION SA. All rights reserved. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/wzomvc Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/wzomvc.zip Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treĂci O autorze ...............................................................................................................13 O korektorze merytorycznym .................................................................................15 PodziÚkowania ......................................................................................................17 Wprowadzenie ......................................................................................................19 Rozdziaï 1. Wprowadzenie do MVC .........................................................................................21 Czym jest MVC? .................................................................................................................................. 21 Zalety wzorca MVC ............................................................................................................................. 22 Popularne szkielety MVC ................................................................................................................... 23 CodeIgniter .................................................................................................................................... 23 Zend Framework ........................................................................................................................... 24 CakePHP ........................................................................................................................................ 24 Wzorce projektowe .............................................................................................................................. 24 Singleton ......................................................................................................................................... 25 Rejestr ............................................................................................................................................. 25 Fabryka ........................................................................................................................................... 26 Obserwator .................................................................................................................................... 26 Tworzenie własnego szkieletu ............................................................................................................ 27 Cele ........................................................................................................................................................ 27 Rozdziaï 2. Podstawy ...............................................................................................................29 Cele ........................................................................................................................................................ 29 Automatyczne ładowanie ................................................................................................................... 29 Przestrzenie nazw ......................................................................................................................... 30 Leniwe ładowanie ......................................................................................................................... 31 Wyjątki .................................................................................................................................................. 32 Metody typów ....................................................................................................................................... 33 Metadane ............................................................................................................................................... 35 Pytania ................................................................................................................................................... 42 Odpowiedzi ........................................................................................................................................... 43 Ćwiczenia .............................................................................................................................................. 43 Poleć książkęKup książkę SPIS TRE¥CI Rozdziaï 3. Klasa bazowa ........................................................................................................45 Cele ........................................................................................................................................................ 45 Metody pobierające i ustawiające ...................................................................................................... 45 Magiczne metody ................................................................................................................................. 48 Introspekcja .......................................................................................................................................... 49 Przezroczyste metody dostępowe ...................................................................................................... 52 Pytania ................................................................................................................................................... 56 Odpowiedzi ........................................................................................................................................... 56 Ćwiczenia .............................................................................................................................................. 56 Rozdziaï 4. Konfiguracja ..........................................................................................................57 Cele ........................................................................................................................................................ 57 Tablice asocjacyjne .............................................................................................................................. 57 Pliki INI ................................................................................................................................................. 58 Pytania ................................................................................................................................................... 64 Odpowiedzi ........................................................................................................................................... 64 Ćwiczenia .............................................................................................................................................. 64 Rozdziaï 5. Buforowanie ..........................................................................................................65 Cele ........................................................................................................................................................ 65 Wąskie gardła wydajności .................................................................................................................. 65 Kod ......................................................................................................................................................... 66 Pytania ................................................................................................................................................... 72 Odpowiedzi ........................................................................................................................................... 72 Ćwiczenia .............................................................................................................................................. 72 Rozdziaï 6. Rejestr ...................................................................................................................73 Cele ........................................................................................................................................................ 73 Singleton ................................................................................................................................................ 73 Rejestr .................................................................................................................................................... 75 Pytania ................................................................................................................................................... 77 Odpowiedzi ........................................................................................................................................... 77 Ćwiczenia .............................................................................................................................................. 77 Trasowanie ............................................................................................................79 Cele ........................................................................................................................................................ 79 Definiowanie tras ................................................................................................................................. 79 Klasy tras ............................................................................................................................................... 80 Klasa Router ......................................................................................................................................... 82 Pytania ................................................................................................................................................... 90 Odpowiedzi ........................................................................................................................................... 90 Ćwiczenia .............................................................................................................................................. 90 Szablony ................................................................................................................91 Cele ........................................................................................................................................................ 91 Idea ......................................................................................................................................................... 91 Alternatywne rozwiązania .................................................................................................................. 92 Implementacja ...................................................................................................................................... 92 Korzyści ............................................................................................................................................... 107 Pytania ................................................................................................................................................. 115 Odpowiedzi ......................................................................................................................................... 115 Ćwiczenia ............................................................................................................................................ 115 Rozdziaï 7. Rozdziaï 8. 6 Poleć książkęKup książkę SPIS TRE¥CI Rozdziaï 9. Bazy danych ........................................................................................................117 Cele ...................................................................................................................................................... 117 Implementacja .................................................................................................................................... 117 Konektory ........................................................................................................................................... 119 Zapytania ............................................................................................................................................ 123 Pytania ................................................................................................................................................. 141 Odpowiedzi ......................................................................................................................................... 141 Ćwiczenia ............................................................................................................................................ 141 Rozdziaï 10. Modele ................................................................................................................143 Cele ...................................................................................................................................................... 143 Idea ....................................................................................................................................................... 143 Implementacja .................................................................................................................................... 144 Budowanie kodu SQL ....................................................................................................................... 146 Modyfikowanie rekordów ................................................................................................................ 155 Nie rozdrabniajmy się! ...................................................................................................................... 167 Pytania ................................................................................................................................................. 167 Odpowiedzi ......................................................................................................................................... 167 Ćwiczenia ............................................................................................................................................ 168 Rozdziaï 11. Testowanie ..........................................................................................................169 Cele ...................................................................................................................................................... 169 Testowanie jednostkowe ................................................................................................................... 169 Klasa testowa ...................................................................................................................................... 170 Bufor .................................................................................................................................................... 171 Pokrycie ........................................................................................................................................ 171 Testy .............................................................................................................................................. 172 Konfiguracja ....................................................................................................................................... 174 Pokrycie ........................................................................................................................................ 174 Testy .............................................................................................................................................. 175 Baza danych ........................................................................................................................................ 175 Pokrycie ........................................................................................................................................ 176 Testy .............................................................................................................................................. 176 Model ................................................................................................................................................... 183 Pokrycie ........................................................................................................................................ 183 Testy .............................................................................................................................................. 184 Szablon ................................................................................................................................................ 186 Pokrycie ........................................................................................................................................ 186 Testy .............................................................................................................................................. 186 A niech to! ........................................................................................................................................... 189 Pytania ................................................................................................................................................. 189 Odpowiedzi ......................................................................................................................................... 189 Ćwiczenia ............................................................................................................................................ 189 Rozdziaï 12. Struktura ..............................................................................................................191 Cele ...................................................................................................................................................... 191 Baza danych ........................................................................................................................................ 192 Foldery ................................................................................................................................................. 192 Pytania ................................................................................................................................................. 193 Odpowiedzi ......................................................................................................................................... 193 7 Poleć książkęKup książkę SPIS TRE¥CI Rozdziaï 13. Rozruch aplikacji ..................................................................................................195 Cele ...................................................................................................................................................... 195 Kiedy plik nie jest plikiem? .............................................................................................................. 195 Przepisywanie adresów URL ............................................................................................................ 196 Plik index.php .................................................................................................................................... 197 Konfiguracja ....................................................................................................................................... 198 Baza danych ................................................................................................................................. 199 Bufor ............................................................................................................................................. 200 Kontroler ............................................................................................................................................. 201 Widoki .......................................................................................................................................... 201 Renderowanie .............................................................................................................................. 203 Pytania ................................................................................................................................................. 208 Odpowiedzi ......................................................................................................................................... 209 Ćwiczenia ............................................................................................................................................ 209 Rozdziaï 14. Rejestracja i logowanie .......................................................................................211 Cele ...................................................................................................................................................... 211 Biblioteki wspólne .............................................................................................................................. 211 Model użytkownika ........................................................................................................................... 212 Rejestracja ........................................................................................................................................... 215 Sesje ...................................................................................................................................................... 218 Logowanie ........................................................................................................................................... 221 Pytania ................................................................................................................................................. 227 Odpowiedzi ......................................................................................................................................... 227 Ćwiczenia ............................................................................................................................................ 228 Rozdziaï 15. Wyszukiwanie ......................................................................................................229 Cele ...................................................................................................................................................... 229 Rozszerzanie implementacji ...................................................................................................... 230 Żądania adresów URL ................................................................................................................ 232 Wyszukiwanie .................................................................................................................................... 239 Pytania ................................................................................................................................................. 245 Odpowiedzi ......................................................................................................................................... 245 Ćwiczenia ............................................................................................................................................ 245 Rozdziaï 16. Ustawienia ..........................................................................................................247 Cele ...................................................................................................................................................... 247 Sprawdzanie danych .......................................................................................................................... 247 Walidacja na zawołanie .............................................................................................................. 252 Ustawienia .......................................................................................................................................... 253 Pytania ................................................................................................................................................. 256 Odpowiedzi ......................................................................................................................................... 256 Ćwiczenia ............................................................................................................................................ 257 Rozdziaï 17. UdostÚpnianie treĂci ............................................................................................259 Cele ...................................................................................................................................................... 259 Strony błędów ..................................................................................................................................... 259 Znajomości ......................................................................................................................................... 263 Udostępnianie treści .......................................................................................................................... 268 Pytania ................................................................................................................................................. 272 Odpowiedzi ......................................................................................................................................... 272 Ćwiczenia ............................................................................................................................................ 272 8 Poleć książkęKup książkę SPIS TRE¥CI Rozdziaï 18. ZdjÚcia .................................................................................................................273 Cele ...................................................................................................................................................... 273 Obsługa wysyłania plików ................................................................................................................ 273 Zdjęcia użytkowników ...................................................................................................................... 274 Wyświetlanie zdjęć w profilu ........................................................................................................... 278 Pytania ................................................................................................................................................. 279 Odpowiedzi ......................................................................................................................................... 279 Ćwiczenia ............................................................................................................................................ 279 Rozdziaï 19. Rozszerzenia ........................................................................................................281 Cele ...................................................................................................................................................... 281 Foxy ............................................................................................................................................... 281 Własne czcionki w CSS .............................................................................................................. 281 Budowa pośrednika .................................................................................................................... 282 Zastosowanie klasy Proxy .......................................................................................................... 286 Imagine ................................................................................................................................................ 288 Obserwator ......................................................................................................................................... 290 Synchroniczność ................................................................................................................................ 290 Kod ....................................................................................................................................................... 292 Zdarzenia ............................................................................................................................................ 293 Wtyczki ................................................................................................................................................ 296 Pytania ................................................................................................................................................. 299 Odpowiedzi ......................................................................................................................................... 299 Ćwiczenia ............................................................................................................................................ 300 Rozdziaï 20. Administracja ......................................................................................................301 Cele ...................................................................................................................................................... 301 Czym jest CMS? ................................................................................................................................. 301 Administratorzy ................................................................................................................................. 301 Logowanie ........................................................................................................................................... 302 Użytkownicy ....................................................................................................................................... 307 Zdjęcia ................................................................................................................................................. 312 Pytania ................................................................................................................................................. 314 Odpowiedzi ......................................................................................................................................... 314 Ćwiczenia ............................................................................................................................................ 314 Rozdziaï 21. Testowanie ..........................................................................................................315 Cele ...................................................................................................................................................... 315 Pytania ................................................................................................................................................. 318 Odpowiedzi ......................................................................................................................................... 318 Ćwiczenia ............................................................................................................................................ 318 Rozdziaï 22. CodeIgniter: rozruch ............................................................................................319 Cele ...................................................................................................................................................... 319 Dlaczego CodeIgniter? ...................................................................................................................... 319 Dlaczego nie CodeIgniter? ............................................................................................................... 320 Przepisywanie adresów URL ............................................................................................................ 320 Trasy .................................................................................................................................................... 321 Pytania ................................................................................................................................................. 321 Odpowiedzi ......................................................................................................................................... 322 Ćwiczenia ............................................................................................................................................ 322 9 Poleć książkęKup książkę SPIS TRE¥CI Rozdziaï 23. CodeIgniter: MVC ................................................................................................323 Cele ...................................................................................................................................................... 323 Różnice ................................................................................................................................................ 323 Modele ................................................................................................................................................. 323 Kontrolery ........................................................................................................................................... 327 Pytania ................................................................................................................................................. 335 Odpowiedzi ......................................................................................................................................... 335 Ćwiczenia ............................................................................................................................................ 336 Rozdziaï 24. CodeIgniter: rozszerzanie ....................................................................................337 Cele ...................................................................................................................................................... 337 Wysyłanie plików ............................................................................................................................... 337 Biblioteki zewnętrzne ........................................................................................................................ 342 Rozszerzanie rdzenia ......................................................................................................................... 345 Pytania ................................................................................................................................................. 346 Odpowiedzi ......................................................................................................................................... 346 Ćwiczenia ............................................................................................................................................ 346 Rozdziaï 25. CodeIgniter: testowanie ......................................................................................347 Cele ...................................................................................................................................................... 347 Narzędzia ............................................................................................................................................ 347 Inne możliwości ................................................................................................................................. 348 Pytania ................................................................................................................................................. 348 Odpowiedzi ......................................................................................................................................... 348 Ćwiczenia ............................................................................................................................................ 348 Rozdziaï 26. Zend Framework: rozruch aplikacji ......................................................................349 Cele ...................................................................................................................................................... 349 Dlaczego Zend Framework? ............................................................................................................. 349 Dlaczego nie Zend Framework? ...................................................................................................... 350 Wstępna konfiguracja ....................................................................................................................... 350 Trasy .................................................................................................................................................... 350 Pytania ................................................................................................................................................. 351 Odpowiedzi ......................................................................................................................................... 352 Ćwiczenia ............................................................................................................................................ 352 Rozdziaï 27. Zend Framework: MVC ........................................................................................353 Cele ...................................................................................................................................................... 353 Różnice ................................................................................................................................................ 353 Modele ................................................................................................................................................. 353 Kontrolery ........................................................................................................................................... 359 Pytania ................................................................................................................................................. 367 Odpowiedzi ......................................................................................................................................... 367 Ćwiczenia ............................................................................................................................................ 367 Rozdziaï 28. Zend Framework: rozszerzanie ............................................................................369 Cele ...................................................................................................................................................... 369 Wysyłanie plików ............................................................................................................................... 369 Biblioteki zewnętrzne ........................................................................................................................ 374 Pytania ................................................................................................................................................. 376 Odpowiedzi ......................................................................................................................................... 376 Ćwiczenia ............................................................................................................................................ 376 10 Poleć książkęKup książkę SPIS TRE¥CI Rozdziaï 29. Zend Framework: testowanie ..............................................................................377 Cele ...................................................................................................................................................... 377 Instalowanie PEAR ............................................................................................................................ 377 Windows ...................................................................................................................................... 377 Unix/Linux/BSD ......................................................................................................................... 378 Mac OS X ..................................................................................................................................... 378 Instalowanie PHPUnit ...................................................................................................................... 378 Uruchamianie testów ........................................................................................................................ 378 Dodawanie testów .............................................................................................................................. 378 Pytania ................................................................................................................................................. 380 Odpowiedzi ......................................................................................................................................... 380 Rozdziaï 30. CakePHP: rozruch ................................................................................................381 Cele ...................................................................................................................................................... 381 Dlaczego CakePHP? .......................................................................................................................... 381 Dlaczego nie CakePHP? .................................................................................................................... 382 Rozpoczynanie pracy ......................................................................................................................... 382 Trasy .................................................................................................................................................... 382 Pytania ................................................................................................................................................. 383 Odpowiedzi ......................................................................................................................................... 383 Ćwiczenia ............................................................................................................................................ 383 Rozdziaï 31. CakePHP: MVC .....................................................................................................385 Cele ...................................................................................................................................................... 385 Modele ................................................................................................................................................. 385 Kontrolery ........................................................................................................................................... 386 Czynności końcowe ........................................................................................................................... 388 Pytania ................................................................................................................................................. 392 Odpowiedzi ......................................................................................................................................... 392 Ćwiczenia ............................................................................................................................................ 392 Rozdziaï 32. CakePHP: rozszerzanie .........................................................................................393 Cele ...................................................................................................................................................... 393 Wysyłanie plików ............................................................................................................................... 393 Zewnętrzne biblioteki ....................................................................................................................... 396 Wtyczki ......................................................................................................................................... 396 Katalog Vendor ........................................................................................................................... 397 Pytania ................................................................................................................................................. 398 Odpowiedzi ......................................................................................................................................... 398 Ćwiczenia ............................................................................................................................................ 398 Rozdziaï 33. CakePHP: testowanie ...........................................................................................399 Cele ...................................................................................................................................................... 399 Testowanie .......................................................................................................................................... 399 Pytania ................................................................................................................................................. 401 Odpowiedzi ......................................................................................................................................... 401 Ćwiczenia ............................................................................................................................................ 401 11 Poleć książkęKup książkę SPIS TRE¥CI Dodatek A Konfiguracja serwera sieciowego ........................................................................403 Cele ...................................................................................................................................................... 403 Windows ............................................................................................................................................. 403 Krok 1. .......................................................................................................................................... 403 Krok 2. .......................................................................................................................................... 406 Krok 3. .......................................................................................................................................... 408 Linux .................................................................................................................................................... 411 Krok 1. .......................................................................................................................................... 411 Krok 2. .......................................................................................................................................... 411 Krok 3. .......................................................................................................................................... 414 Krok 4. .......................................................................................................................................... 414 Mac OS X ............................................................................................................................................ 415 Krok 1. .......................................................................................................................................... 415 Krok 2. .......................................................................................................................................... 416 Krok 3. .......................................................................................................................................... 418 Testowanie .......................................................................................................................................... 419 Skorowidz.............................................................................................................421 12 Poleć książkęKup książkę R O Z D Z I A ’ 1 0 „ „ „ Modele Do tej pory tworzyliśmy klasy stanowiące podstawę naszego szkieletu, ale niemające wielkiego wpływu na sposób, w jaki będą z niego korzystać przyszłe aplikacje. Wkrótce to się zmieni. Jak wspominałem wcześniej, moc obliczeniowa jest bezużyteczna, jeśli nie ma danych do przetwarzania. Większość projektów, nad jakimi będziesz kiedykolwiek pracować, ma jakieś wspólne cechy, np. przechowywanie, przekształcanie oraz zwracanie i wyświetlanie danych. Wszystkie te czynności można wykonywać z pomocą bazy danych. W rozdziale 9. dowiedziałeś się, jak utworzyć rozszerzalną bibliotekę obsługi baz danych, oraz przestudiowałeś przypadek bazy MySQL. Bezpośrednie posługiwanie się bazą danych to jeden ze sposobów na osiągnięcie celu, ale robienie tego w kontrolerze nie jest dobrym pomysłem. Dlatego między innymi tworzy się modele. Cele x Zrozumienie, czym są modele. x Zbudowanie klasy modelu do ułatwienia obsługi ogólnych, powtarzalnych czynności. Idea Modele stanowią warstwę izolacyjną dla mechanizmów bezpośredniej komunikacji z bazą danych i zewnętrznymi usługami. Modele, które zbudujemy w tym rozdziale, będą udostępniać prosty interfejs do wykonywania zmian w bazie danych. „ Uwaga Przedstawiony w tym rozdziale sposób definiowania modeli czasami nazywa siÚ odwzorowaniem lub mapowaniem obiektowo-relacyjnym (ang. Object-Relational Mapping — ORM). Biblioteka ORM stanowi szczelnÈ warstwÚ komunikacyjnÈ miÚdzy dwoma systemami powiÈzanymi ze sobÈ ze wzglÚdu na dane. WiÚcej na ten temat moĝna przeczytaÊ na stronie http://en.wikipedia.org/wiki/Object-relational_mapping. Poleć książkęKup książkę WZORZEC MVC W PHP DLA PROFESJONALISTÓW Należy podkreślić, że zastosowanie modeli nie ogranicza się do baz danych. Mogą być używane do łączenia się z dowolnymi usługami zewnętrznymi i mogą udostępniać wygodny interfejs dla kontrolerów. My jednak skupimy się na modelu ORM. Równie dobrze możemy kiedyś otrzymać zadanie napisania modelu łączącego się z serwisem Flickr w celu pobierania zdjęć albo pozwalającego wysyłać lub pobierać pliki przy użyciu usługi chmurowej typu Amazon S3. Modele służą po prostu do przechowywania zasobów niedostępnych bezpośrednio w widoku, czyli wykorzystywanych przez kontrolery do łączenia widoków i modeli. Implementacja W bazach danych można przechowywać wiele różnych rodzajów danych. W naszych modelach będziemy potrzebować tylko kilku. Oto one. x Automatyczna numeracja Pola z automatyczną numeracją generują rosnące wartości liczbowe i najczęściej są używane do identyfikacji. Pola tekstowe zwykle typu varchar lub text, w zależności od przewidywanej długości ich treści. x Tekst x Liczby całkowite x Liczby dziesiętne x Wartości logiczne x Data i godzina Domyślna długość pól naszego typu całkowitoliczbowego będzie wynosić 11. Pola dziesiętne służą do przechowywania wartości zmiennoprzecinkowych. Pola logiczne to w istocie pola na małe liczby całkowite (tinyint). Wartości true i false są w nich zamieniane na liczby całkowite. Wybór tak ograniczonego zestawu typów danych jest podyktowany tym, że chcemy, aby wszystko było jak najprostsze. Ponadto mamy pewność, że typy te są obsługiwane przez zdecydowaną większość baz danych. Jak będziemy ich używać w modelach? Na listingu 10.1 przedstawiam przykład ilustrujący definicje tych typów na potrzeby naszego modelu. Listing 10.1. Model User class User extends Framework\Model { /** * @column * @readwrite * @primary * @type autonumber */ protected $_id; /** * @column * @readwrite * @type text * @length 100 */ protected $_first; /** * @column 144 Poleć książkęKup książkę * @readwrite * @type text * @length 100 */ protected $_last; /** * @column * @readwrite * @type text * @length 100 * @index */ protected $_email; /** * @column * @readwrite * @type text * @length 100 * @index */ protected $_password; /** * @column * @readwrite * @type text */ protected $_notes; /** * @column * @readwrite * @type boolean * @index */ protected $_live; /** * @column * @readwrite * @type boolean * @index */ protected $_deleted; /** * @column * @readwrite * @type datetime */ protected $_created; /** * @column * @readwrite * @type datetime */ protected $_modified; } ROZDZIA’ 10. „ MODELE 145 Poleć książkęKup książkę WZORZEC MVC W PHP DLA PROFESJONALISTÓW Pierwszą rzeczą, jaka rzuca się w oczy w tym modelu, jest to, że zawiera on tylko kilka własności i jest bardzo prosty. Każda z tych chronionych zmiennych ma flagę @readwrite, którą znamy, ponieważ używaliśmy już jej wcześniej. Z jej pomocą będziemy mogli wywoływać metody dostępowe typu setFirst() czy getCreated() bez ich uprzedniego definiowania w klasie Model. Jednak najbardziej interesują nas nowe własności. Własności klasy, które przekładają się na kolumny w bazie danych, mają flagę @column. Nasz kod inicjacji modelu będzie ignorował wszystkie własności pozbawione tej flagi. Własność $_id ma flagę @primary oznaczającą, że jest to kolumna klucza głównego. Własności $_email, $_password, $_live oraz $_deleted mają flagę @index oznaczającą, że powinny być indeksowane w tabeli bazy danych. Pozostały jeszcze flagi @type i @length. Określają typ danych własności i długości pól (a to będzie potrzebne tylko w przypadku pól tekstowych do wybierania między typami varchar i text). Przedstawiona struktura, jeśli ma się do czegoś przydać, musi dać się przełożyć na tabelę bazy danych. Warstwa baza danych-model musi zamienić utworzone przez nas kolumny na kod SQL, który następnie będzie można wykonać w bazie danych. Po zakończeniu powinniśmy otrzymać takie polecenie SQL, jakie możesz zobaczyć na listingu 10.2. Listing 10.2. Reprezentacja modelu User w postaci tabeli bazy danych MySQL CREATE TABLE user ( id int(11) NOT NULL AUTO_INCREMENT, first varchar(100) DEFAULT NULL, last varchar(100) DEFAULT NULL, email varchar(100) DEFAULT NULL, password varchar(100) DEFAULT NULL, notes text, live tinyint(4) DEFAULT NULL, deleted tinyint(4) DEFAULT NULL, created datetime DEFAULT NULL, modified datetime DEFAULT NULL, PRIMARY KEY ( id ), KEY email ( email ), KEY password ( password ), KEY live ( live ), KEY deleted ( deleted ) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; „ Uwaga Haseï nigdy nie naleĝy przechowywaÊ w postaci zwykïego tekstu, ale tutaj dla uproszczenia zïamiemy tÚ zasadÚ. PamiÚtaj jednak, ĝe hasïa naleĝy szyfrowaÊ, aby nikt ich nie wykradï i nie wykorzystaï do niecnych celów. Budowanie kodu SQL W kodzie SQL pokazanym na listingu 10.2 przedstawiam, jak powinien nasz model wyglądać w bazie danych. Kod ilustruje konwersję typów danych wykonywaną przez klasę Model między prostymi typami (tekst, liczby całkowite, wartości logiczne) a rzeczywistymi typami pól w bazie danych. Na listingu 10.3 znajduje się początek klasy Model. Listing 10.3. Klasa Model namespace Framework { use Framework\Base as Base; use Framework\Registry as Registry; use Framework\Inspector as Inspector; use Framework\StringMethods as StringMethods; use Framework\Model\Exception as Exception; 146 Poleć książkęKup książkę ROZDZIA’ 10. „ MODELE class Model extends Base { /** * @readwrite */ protected $_table; /** * @readwrite */ protected $_connector; /** * @read */ protected $_types = array( autonumber , text , integer , decimal , boolean , datetime ); protected $_columns; protected $_primary; public function _getExceptionForImplementation($method) { return new Exception\Implementation( Metoda {$method} nie jest zaimplementowana ); } } } Początek tej klasy jest bardzo prosty. Zawiera definicje własności, dla których powinny zostać utworzone metody dostępowe i metody przesłaniające generowanie wyjątków. Własność $_types zawiera proste typy danych rozpoznawane przez nasze modele i jest używana zarówno wewnętrznie, jak i na zewnątrz do walidacji. Zanim będziemy mogli utworzyć kod SQL dla naszej tabeli modelu, musimy napisać kilka metod pomocniczych w klasie StringMethods (listing 10.4). Listing 10.4. Metody odmiany klasy StringMethods namespace Framework { class StringMethods { private static $_singular = array( (matr)ices$ = \\1ix , (vert|ind)ices$ = \\1ex , ^(ox)en = \\1 , (alias)es$ = \\1 , ([octop|vir])i$ = \\1us , (cris|ax|test)es$ = \\1is , (shoe)s$ = \\1 , (o)es$ = \\1 , (bus|campus)es$ = \\1 , ([m|l])ice$ = \\1ouse , (x|ch|ss|sh)es$ = \\1 , (m)ovies$ = \\1\\2ovie , (s)eries$ = \\1\\2eries , ([^aeiouy]|qu)ies$ = \\1y , ([lr])ves$ = \\1f , (tive)s$ = \\1 , 147 Poleć książkęKup książkę WZORZEC MVC W PHP DLA PROFESJONALISTÓW (hive)s$ = \\1 , ([^f])ves$ = \\1fe , (^analy)ses$ = \\1sis , ((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$ = \\1\\2sis , ([ti])a$ = \\1um , (p)eople$ = \\1\\2erson , (m)en$ = \\1an , (s)tatuses$ = \\1\\2tatus , (c)hildren$ = \\1\\2hild , (n)ews$ = \\1\\2ews , ([^u])s$ = \\1 ); private static $_plural = array( ^(ox)$ = \\1\\2en , ([m|l])ouse$ = \\1ice , (matr|vert|ind)ix|ex$ = \\1ices , (x|ch|ss|sh)$ = \\1es , ([^aeiouy]|qu)y$ = \\1ies , (hive)$ = \\1s , (?:([^f])fe|([lr])f)$ = \\1\\2ves , sis$ = ses , ([ti])um$ = \\1a , (p)erson$ = \\1eople , (m)an$ = \\1en , (c)hild$ = \\1hildren , (buffal|tomat)o$ = \\1\\2oes , (bu|campu)s$ = \\1\\2ses , (alias|status|virus) = \\1es , (octop)us$ = \\1i , (ax|cris|test)is$ = \\1es , s$ = s , $ = s ); public static function singular($string) { $result = $string; foreach (self::$_singular as $rule = $replacement) { $rule = self::_normalize($rule); if (preg_match($rule, $string)) { $result = preg_replace($rule, $replacement, $string); break; } } return $result; } function plural($string) { $result = $string; foreach (self::$_plural as $rule = $replacement) { $rule = self::_normalize($rule); if (preg_match($rule, $string)) { $result = preg_replace($rule, $replacement, $string); break; } 148 Poleć książkęKup książkę ROZDZIA’ 10. „ MODELE } return $result; } } } Musimy też dodać kilka metod do klasy Model (listing 10.5). Listing 10.5. Przesłonięcia metod pobierających namespace Framework { use Framework\Base as Base; use Framework\Registry as Registry; use Framework\Inspector as Inspector; use Framework\StringMethods as StringMethods; use Framework\Model\Exception as Exception; class Model extends Base { public function getTable() { if (empty($this- _table)) { $this- _table = strtolower(StringMethods::singular(get_class($this))); } return $this- _table; } public function getConnector() { if (empty($this- _connector)) { $database = Registry::get( database ); if (!$database) { throw new Exception\Connector( Brak dostÚpnego konektora ); } $this- _connector = $database- initialize(); } return $this- _connector; } } } Do klasy StringMethods dodaliśmy dwie nowe metody (zwane metodami odmiany). Ich działanie polega na zamianie przy użyciu wyrażeń regularnych łańcuchów na formy w liczbie pojedynczej lub mnogiej. Następnie przesłoniliśmy metody pobierające własności $_table i $_connector w klasie Model. Chcemy, aby metoda getTable() zwracała zdefiniowaną przez użytkownika nazwę tabeli lub domyślnie pojedynczą formę nazwy klasy bieżącego modelu (przy użyciu metody PHP get_class() i jednej z nowych metod odmiany dodanych w klasie StringMethods). Metodę getConnector() przesłoniliśmy po to, aby można było zwracać zawartość własności $_connector lub egzemplarz konektora zapisany w klasie Registry albo zgłaszać wyjątek Model\Exception\Connector. Jest to nasze pierwsze pobranie czegoś z klasy Registry. Robimy to w tym miejscu, ponieważ jest bardzo możliwe, że do tej pory połączenie z bazą danych będzie już nawiązane. Potrzebujemy też metody zwracającej w uporządkowanej tablicy kolumny,
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Wzorzec MVC w PHP dla profesjonalistów
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: