Projekt okładki: Studio Gravite/Olsztyn ul. Kościuszki 1c, 44-100 …€¦ · dziemy tworzyć...
Transcript of Projekt okładki: Studio Gravite/Olsztyn ul. Kościuszki 1c, 44-100 …€¦ · dziemy tworzyć...
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.
Opieka redakcyjna: Ewelina BurskaProjekt okładki: Studio Gravite/Olsztyn Obarek, Pokoński, Pazdrijowski, ZapruckiMateriały graficzne na okładce zostały wykorzystane za zgodą Shutterstock.
Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: 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/zef3ppMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
ISBN: 978-83-283-3283-6
Copyright © Helion 2018
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 ...............................................................................................7
ROZDZIAŁ 1. Wprowadzenie .....................................................................................111.1. Czym jest Zend Framework? ........................................................................................ 111.2. Komponenty .................................................................................................................... 121.3. Dlaczego warto wybrać wersję 3.0? ................................................................................. 131.4. Co nowego w ZF3? ......................................................................................................... 131.5. Społeczność ..................................................................................................................... 141.6. Przykłady ......................................................................................................................... 15
ROZDZIAŁ 2. Instalacja ..............................................................................................172.1. Wymagane aplikacje ...................................................................................................... 172.2. Ustawianie środowiska pracy ....................................................................................... 182.3. Ściągnięcie szkieletu aplikacji ....................................................................................... 212.4. Konfiguracja Zenda ........................................................................................................ 22
ROZDZIAŁ 3. Struktura szkieletu aplikacji ...............................................................253.1. Pliki konfiguracyjne ....................................................................................................... 253.2. Zewnętrzne biblioteki .................................................................................................... 283.3. Konfiguracja modułów .................................................................................................. 303.4. W jaki sposób działa Zend 3? ........................................................................................ 32
ROZDZIAŁ 4. Prosta aplikacja i workflow .................................................................354.1. Wstępna konfiguracja .................................................................................................... 354.2. Modyfikacje w kontrolerze i widoku ................................................................................ 38
ROZDZIAŁ 5. Tworzenie nowego modu u ................................................................435.1. Dodanie przykładowego modułu ................................................................................. 435.2. Nowy formularz .............................................................................................................. 455.3. Dodawanie rekordów ..................................................................................................... 465.4. Edycja rekordu ................................................................................................................ 495.5. Usuwanie rekordu .......................................................................................................... 515.6. Dodanie modułu przez ZF2Rapid ................................................................................ 535.7. Co powinno się znajdować w module? ....................................................................... 53
Poleć książkęKup książkę
4 S P I S T R E Ś C I
ROZDZIAŁ 6. MVC .....................................................................................................556.1. Model ................................................................................................................................ 556.2. Widok ............................................................................................................................... 586.3. Kontroler .......................................................................................................................... 616.4. Router ............................................................................................................................... 63
ROZDZIAŁ 7. Najwa niejsze komponenty ................................................................717.1. Event Manager ................................................................................................................ 717.2. Module Manager ............................................................................................................ 777.3. Service Manager .............................................................................................................. 797.4. Hydratory ........................................................................................................................ 87
ROZDZIAŁ 8. Bazy danych .........................................................................................918.1. Adaptery — MariaDB, MySQL, PostgreSQL itp. ...................................................... 918.2. Proste zapytania .............................................................................................................. 928.3. Zapytania CRUD ............................................................................................................ 958.4. Table Gateway ................................................................................................................. 978.5. Row Gateway ................................................................................................................... 99
ROZDZIAŁ 9. Szablony widoków .............................................................................1019.1. Domyślne widoki .......................................................................................................... 1019.2. Silniki szablonów — Smarty, Twig ............................................................................ 1049.3. Layouty i helpery .......................................................................................................... 109
ROZDZIAŁ 10. Formularze .........................................................................................11510.1. Generowanie ............................................................................................................... 11610.2. Walidacja ..................................................................................................................... 12110.3. Filtrowanie ................................................................................................................... 12510.4. Dekoratory ................................................................................................................... 12810.5. Wykończenie formularza użytkownika .................................................................. 129
ROZDZIAŁ 11. Tworzenie listy komiksów ze stronicowaniem ................................13711.1. Nowy kontroler ........................................................................................................... 13711.2. Nowy model ................................................................................................................ 13911.3. Nowy widok ................................................................................................................ 14411.4. Stronicowanie ............................................................................................................. 146
ROZDZIAŁ 12. Apigility ..............................................................................................15112.1. Ustawienie środowiska .............................................................................................. 15112.2. Graficzny panel administracyjny ............................................................................. 15512.3. Tworzenie serwisów RPC .......................................................................................... 15612.4. Tworzenie serwisów REST ........................................................................................ 16212.5. Zabezpieczenie serwisów ........................................................................................... 172
ROZDZIAŁ 13. Tworzenie dynamicznej sondy ..........................................................17713.1. Nowy kontroler ........................................................................................................... 17713.2. Nowa biblioteka .......................................................................................................... 18213.3. Nowe endpointy API ................................................................................................. 189
Poleć książkęKup książkę
S P I S T R E Ś C I 5
ROZDZIAŁ 14. Rejestracja i logowanie .....................................................................19314.1. Rejestrowanie użytkowników ................................................................................... 19314.2. Logowanie .................................................................................................................... 20714.3. Sesja .............................................................................................................................. 211
ROZDZIAŁ 15. Tworzenie panelu administratora i CMS .........................................21715.1. Nowy moduł ................................................................................................................ 21715.2. Dostęp do panelu ........................................................................................................ 22415.3. CMS — system zarządzania treścią ........................................................................ 225
ROZDZIAŁ 16. Tworzenie systemu zarz dzaj cego dost pami u ytkowników .....23916.1. Podstawowe pojęcia ................................................................................................... 23916.2. Zabezpieczenia ............................................................................................................ 24016.3. Strategie ........................................................................................................................ 24416.4. Integracja systemu autoryzacji ................................................................................. 245
ROZDZIAŁ 17. Tworzenie modu u do debugowania i logów ...................................25117.1. Własny moduł debugowania .................................................................................... 25117.2. Obsługa błędów i biblioteka Whoops ..................................................................... 262
ROZDZIAŁ 18. Tworzenie obs ugi wielu j zyków .....................................................26918.1. Integracja obiektu MvcTranslate ............................................................................. 26918.2. Dostępne formaty translacji ...................................................................................... 27118.3. Dodatkowe klasy i metody lokalizacyjne ................................................................ 274
ROZDZIAŁ 19. Tworzenie formularzy opartych na strukturze BootstrapTwitterCSS ........................................................................................27919.1. Przygotowanie formularza i kontrolera .................................................................. 27919.2. Implementacja formularza w Bootstrap 3 ................................................................... 281
ROZDZIAŁ 20. Tworzenie w asnej nawigacji i sitemapy ...........................................29520.1. Przerobienie nawigacji ............................................................................................... 29520.2. Dodanie patchwaya i linków ..................................................................................... 30120.3. Dynamiczna sitemapa ................................................................................................ 303
ROZDZIAŁ 21. Tworzenie testów jednostkowych ....................................................30921.1. Ustawienie środowiska dla testów ........................................................................... 30921.2. Testowanie modeli Rowset i Fixtures ...................................................................... 31221.3. Testowanie z użyciem baz danych ........................................................................... 31921.4. Testy kontrolera i mocks ........................................................................................... 324
Skorowidz ...................................................................................................331
Poleć książkęKup książkę
6 S P I S T R E Ś C I
Poleć książkęKup książkę
ROZDZIAŁ 4.Prosta aplikacja i workflow
4.1. Wst pna konfiguracjaDomyślnie Zend przychodzi już z pierwszym modułem, o nazwie Application. Służy ongłównie do wyświetlenia statycznej strony informacyjnej z linkami do modułów doku-mentacji czy pomocy. Użyjemy tego właśnie modułu do modyfikacji kodu oraz wpro-wadzenia zmian, dzięki czemu poznamy sposób działania nowego Zend Framework.
Nasze założenie w tym rozdziale jest takie, aby zaimplementować użycie bazy danychMySQL, a następnie pobrać wartość konkretnego rekordu.
Zacznijmy od stworzenia w MySQL przykładowej tabeli users, która będzie miała3 kolumny: id, username i password. Możemy ją utworzyć przez phpMyAdmin dołą-czony do pakietu XAMPP bądź też bezpośrednio przez zapytanie SQL w wierszu po-leceń MySQL.
CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL, `username` varchar(100) NOT NULL, `password` char(128) NOT NULL) ENGINE=InnoDB
ALTER TABLE `users` ADD PRIMARY KEY (`id`);ALTER TABLE `users` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
Następnie zaczniemy w głównym katalogu od modyfikacji konfiguracji naszej aplikacji.Do config/global.php dodajmy poniższy kod:
'db' => array( 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=zend3;host=localhost', 'driver_options' => array(
Poleć książkęKup książkę
3 6 R O Z D Z I A Ł 4 .
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' ) ), 'service_manager' => array( 'factories' => array( 'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory', ), )
natomiast do config/local.php.dist, który później zmieni się na local.php:
'db' => array( 'username' => 'root', 'password' => '' )
Teraz tylko włączamy tryb deweloperski w wierszu poleceń, aby nasze pliki .distsklonowały się do postaci .php:
composer development-enable
Wszystko, co powyżej robimy, prowadzi do ustawienia hasła i nazwy użytkownika donaszej domyślnej bazy danych w MySQL. Domyślnie w XAMPP-ie nazwa głównegoużytkownika to root, a hasło nie jest ustawione.
Tak jak w poprzednich wersja Zenda, aby połączyć się z jakąkolwiek bazą danych,musimy określić dane do połączenia. Domyślnie dla XAMPP-a host to localhost,a nazwa bazy to „zend3” (wewnątrz której już istnieje stworzona przez nas tabela o na-zwie users). Dalej w kluczu driver określamy typ bazy danych: dla MySQL domyślniejest ustawione Pdo. Dodatkowo określiliśmy tutaj typ kodowania znaków naszej bazy,czyli UTF-8; jeśli nie określimy w tym miejscu odpowiedniego kodowania, zamiastpolskich znaków zobaczymy śmieszne znaczki lub np. ??. Zwróć uwagę, że w global.phpnie ma informacji o nazwie użytkownika i haśle, dlatego że podany plik nie powinienzawierać żadnych poufnych informacji. Wszystkie podobne informacje konfiguracyjnepowinniśmy zamieszczać w local.php. Wynika to z systemu kontroli wersji, gdzieglobal.php jest wysyłany do repozytorium, a local.php dodawany do plików ignorowa-nych przez GIT. Dzięki temu nigdy „nie podzielisz się” swoimi prywatnymi hasłamiz innymi osobami, jeśli przez przypadek wyślesz coś na publiczny serwer kontroli wersji.
Oprócz danych do bazy dodajemy również rekord o nazwie service_manager, któryokreśla zależności naszego modułu od innych klas. Opcja factories oznacza, że bę-dziemy tworzyć nową instancję klasy Zend\Db\Adapter\Adapter (czyli praktycznietej samej klasy co w Zend 1). Zostanie ona utworzona z parametrem driveraZend\Db\ AdapterAdapterServiceFactory. Dzięki temu nie musimy się przejmowaćtworzeniem nowych obiektów Zenda w naszych kontrolerach czy modelach. Takaklasa będzie już dostępna do użycia w innych plikach konfiguracyjnych, o którychzaraz wspomnimy.
Następnym krokiem, do skonfigurowania tym razem samego modułu, jest dodanieponiższego kodu do module/Application/config/module.config.php:
Poleć książkęKup książkę
P R O S T A A P L I K A C J A I W O R K F L O W 3 7
'controllers' => [ 'factories' => [ Controller\IndexController::class => function($sm) { $usersService = $sm->get('Application\Model\UsersTable');
return new Controller\IndexController($usersService); } ], ],
Klucz o nazwie controllers, jak sama nazwa wskazuje, określa wszystkie kontrolerydostępne w module. Ponieważ będziemy musieli pobrać i wyświetlić rekord z tabeliusers, musimy mieć dostęp do nowego modułu (nazwanego UsersTable). Przekazu-jemy więc obiekt naszego modelu $usersService przez konstruktor Application/src/Controller/IndexController.php. Jedyna „magia” w tym kodzie to pobranie UsersTableprzez $sm Service Managera, który jest zawsze dostępny jako pierwszy parametr,poprzez metodę get(). Oczywiście, obecnie Service Manager nie ma naszego modelu,który nawet jeszcze nie istnieje. Aby dodać naszą klasę do SM, potrzebujemy do-datkowego kodu w pliku module/Application/src/Module.php:
public function getServiceConfig(){ return array( 'factories' => array( 'UsersTableGateway' => function ($sm) { $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype(new User()); return new TableGateway('users', $dbAdapter, null, $resultSetPrototype); }, 'Application\Model\UsersTable' => function($sm) { $tableGateway = $sm->get('UsersTableGateway'); $table = new UsersTable($tableGateway);
return $table; } ) );}
Jak możesz sam zauważyć, dodaliśmy do pliku Module nową metodę, getServiceCon-fig(), która określa dodatkową konfigurację naszych wewnętrznych komponentów,jak modele, formularze czy zwykłe obiekty.
Aby powyższa metoda zadziałała, musimy również dodać linki do klasy (tuż poddefinicją namespace), do której się odwołujemy:
use Application\Model\User;use Application\Model\UsersTable;use Zend\Db\ResultSet\ResultSet;use Zend\Db\TableGateway\TableGateway;
Poleć książkęKup książkę
3 8 R O Z D Z I A Ł 4 .
Na początku definiujemy UsersTableGateway, która będzie obiektem zendowskimTableGateway nakierowanym na tabelę o nazwie users. Będzie on zwracał obiekty typuApplication/src/Model/User.php, w których umieścimy metody takie jak getId() czy ge-tUsername(). Zauważmy, że dzięki wcześniejszej deklaracji klasy Zend\Db\Adapter\Adapter w pliku config/global.php mamy tutaj od razu dostęp do instancji tej klasyprzez Service Managera.
Następnie konfigurujemy Application\Model\UsersTable poprzez pobranie właśniezdefiniowanego UsersTableGateway oraz zwrócenie obiektu klasy UsersTable. Terazwystarczy już stworzyć odpowiednie pliki i zmodyfikować kontroler.
4.2. Modyfikacje w kontrolerze i widokuZacznijmy może od dwóch nowych klas, User oraz UsersTable.
Pierwsza reprezentuje pojedynczy rekord w bazie. Jeśli więc nasza tabela składa sięz 3 kolumn, to powinniśmy mieć przynajmniej 3 metody: getId(), getUsername(), getPassword() plus dodatkowa metoda exchangeArray($row), która przekonwertuje
zwróconą tablicę asocjacyjną na zmienne klasowe. Klasa User z pliku Application/src/Model/User.php wygląda następująco:
namespace Application\Model;
class User{ public $id; public $username; public $password;
public function exchangeArray($row) { $this->id = (!empty($row['id'])) ? $row['id'] : null; $this->username = (!empty($row['username'])) ? $row['username'] : null; $this->password = (!empty($row['password'])) ? $row['password'] : null; }
public function getId() { return $this->id; }
public function getUsername() { return $this->username; }
public function getPassword() { return $this->password; }}
Poleć książkęKup książkę
P R O S T A A P L I K A C J A I W O R K F L O W 3 9
Stwórzmy jeszcze plik klasy UsersTable.php, który zapiszemy w tym samym miejscuco User.php.
namespace Application\Model;
use Zend\Db\TableGateway\TableGateway;
class UsersTable{ public function __construct(TableGateway $tableGateway) { $this->tableGateway = $tableGateway; }
public function getById($id) { $id = (int) $id; $rowset = $this->tableGateway->select(array('id' => $id)); $row = $rowset->current();
if (!$row) { throw new \Exception('nie znaleziono u ytkownika o id: '.$id); } return $row; }}
UsersTable to nasz model, który odpowiada za komunikację z bazą danych. W tej klasiemoże mieć wszystkie operacje CRUD, takie jak create(), replace(), update() czydelete(), oraz — tak jak w powyższym przykładzie — getById(), getByUsername() i takdalej. Jeśli pamiętasz plik Module.php, to pewnie już wiesz, że konstruktor w tej klasieoczekuje obiektu typu TableGateway. Dla przypomnienia:
$table = new UsersTable($tableGateway);
W taki bowiem sposób stworzyliśmy obiekt, który jest odbieralny w __construct().
Wewnątrz jedynej metody getById() przekazujemy numer id, jakiego rekordu poszu-kujemy. Reszta to już zwykłe użycie Zend Db, z którego wywołujemy metodę select()z parametrem id. Dzięki $rowset->current() pobieramy pierwszy wynik zapytania.Jeśli jest on pusty, wyrzucamy wyjątek, w przeciwnym razie zwracamy pojedynczyobiekt typu Application\Model\User.
Przejdźmy teraz do kontrolera IndexController. Należałoby połączyć go z modelemoraz widokiem, w którym wyświetlimy dane o użytkowniku; wygląda on następująco:
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;use Zend\View\Model\ViewModel;use Application\Model\UsersTable;
class IndexController extends AbstractActionController{
Poleć książkęKup książkę
4 0 R O Z D Z I A Ł 4 .
private $usersTable = null; public function __construct(UsersTable $usersTable) { $this->usersTable = $usersTable; }
public function indexAction() { $view = new ViewModel(); $model = $this->usersTable; $row = $model->getById(1);
$view->setVariable('id', $row->getId()); $view->setVariable('username', $row->getUsername()); $view->setVariable('password', $row->getPassword());
return $view; }}
Pierwszą rzeczą, jaką wykonujemy, jest definicja klasowej zmiennej naszego modelu$userTable, którą otrzymamy w konstruktorze kontrolera. Dalej modyfikujemy metodęindexAction(), która teraz wywoła metodę getById() z UsersTable z parametrem 1.W tym momencie powinniśmy dodać jeden rekord w bazie MySQL, w tabeli o nazwieusers: wpis z numerem identyfikacyjnym ID = 1 i jakimiś wstępnymi danymi. W moimprzypadku zrzut danych tabeli users wygląda następująco:
Rysunek 4.1.
Wracając do kontrolera, wywołujemy funkcję setVariable() z obiektu new ViewModel(),która wyśle nam jedną zmienną do pliku widoku index.phtml. Metoda ta przyjmujenajpierw nazwę zmiennej w widoku, a później samą zmienną. Zmienna $row, którazostaje zwrócona przez getById(), jest naszym obiektem Application\Model\User.
Poleć książkęKup książkę
P R O S T A A P L I K A C J A I W O R K F L O W 4 1
Dzięki temu jesteśmy w stanie wywołać jej metody, takie jak getId() czy getUsername().Powtarzamy analogicznie pierwszą linię z id dla username oraz password.
Ostatnie zadanie to wyświetlenie danych o użytkowniku w widoku Application/view/application/index/index.phtml:
<div class="jumbotron"> <h1><span class="zf-green">Zend Framework 3</span></h1> <p> Znaleziony u ytkownik:<br /><br /> Id: <?php echo $id; ?><br /> Username: <?php echo $username; ?><br /> Password: <?php echo $password; ?> </p></div>
Możesz tutaj swobodnie zignorować znaczniki kodu HTML; interesują nas jedyniezapiski typu <?php echo $username; ?>. Są to nazwy kluczy, które przekazaliśmyw kontrolerze.
Jeśli wszystko dobrze wykonałeś, Twoim oczom powinna ukazać się poniższa stronabez jakichkolwiek błędów.
Rysunek 4.2.
Poleć książkęKup książkę
4 2 R O Z D Z I A Ł 4 .
Poleć książkęKup książkę
Skorowidz
AActive Record, 99adapter, 91, 98
autoryzacyjny, 246bazy danych, 203, 322budowa, 92DB, 246
administrator, 239, 241panel, 217
dostęp, 224widok, 217, 221
adresUri, 125URL, 120, 140, 240, 303WWW, 151
algorytmMD5, 195SHA1, 195SHA2, 195
Apigility, 151dokumentacja, 152konfiguracja, 151, 152, 153,
154UI, 152
aplikacjadebugowanie, Patrz:
debugowaniemobilna, 151NodeJS, Patrz: NodeJStestowanie, Patrz: test
architekturaMOVE, Patrz: MOVEMVC, Patrz: MVC
atakCSRF, 120SQL injections, 93
autoryzacja, 194, 239, 240,Patrz też: zabezpieczenie
Http Basic Authorisation,172
integracja, 245, 246przekazywanie, 243typ, 173, 174
Bbaza danych
adapter, 203, 322kodowanie, 36Maria DB, 91oparta na RDMS, 252połączenie, 36rekord, 124
dodawanie, 46, 57, 95edycja, 49, 50, 57, 95usuwanie, 51, 95, 97zastępowanie, 95
testowych, 318wzorzec tabel, 97zarządzanie, 43
bibliotekaBjyAuthorize, 239Bootstrap, 279, 287DivixUtils, 179, 181, 182PHPUnit, 309Prophecy, 327
punkt startowy, 54Redistribution package, 18Whoops, 265zewnętrzna, 29ZF Development Mode,
152ZFC RBAC, 239
konfiguracja, 245strategia, Patrz: strategia
błąd, 253, 260, 261, 263, 265404, 262, 263500, 262komunikat, 265
breadcrumbs, Patrz: patchway
CCAPTCHA, 120checkbox, 119ChromePHP, 252ciąg znaków, 125, 127CKEditor, 217CMS, 225Composer, 20, 28Container, Patrz: pojemnikCRUD, 95, 228
Ddata, 120, 124debugowanie, 251, 254, 260
błąd, 260, 261dekorator, 128, 129
Poleć książkęKup książkę
3 3 2 S K O R O W I D Z
Eedytor programisty, Patrz: IDEemail, 120, 251endpoint, 151, 155
REST, Patrz: RESTRPC, Patrz: RPCtestowanie, 160
eventdispatch, 110renderer, 110response, 110
Ffabryka, 115fieldset, 115, 117, 123, 203filtr, 125, 127, 252, 253FirePHP, 252, 253Fixture, 318format
.phtml, 101CSV, 151GetText, 271, 272INI, 271JSON, 26, 151, 177XML, 26, 151, 253
formater, 253formularz, 37, 111, 115, 129,
199, 203, 279, 281atrybut, 46, 48błąd, 222, 286, 287dekorator, Patrz: dekoratorfiltrowanie, Patrz: filtrimplementacja w Bootstrap,
281kod HTML, 284struktura, 128tworzenie, 45, 115, 116walidacja, 118, 121, 123, 125,
205wyświetlanie, 48
funkcja, Patrz też: metodahaszująca, 194parametryzacja, 54
GGIT, 153gość, 240, 245, 300Gravatar, 111
Hhasło, 120, 195
haszowanie, 195sól, 195, 196, 200
helper, 45CurrencyFormat, 274, 275
HTML, 111HTTPie, 160hydrator, 48, 115, 162, 199, 200
IIBAN, 124IDE, 17ISBN, 124
Kkarta kredytowa, 124klasa dynamiczna, 59klucz
adapter, 143charset, 59, 92controller_plugins, 30controllers, 30, 37, 303Database, 92default, 298driver, 36Driver, 92factories, 282, 299filters, 30, 31font, 202form_elements, 30, 31height, 203hostname, 92http-equiv, 59hydrators, 30imgDir, 203imgUrl, 203input_filters, 30, 31invokable, 31
itemprop, 59lineNoiseLevel, 203log_processors, 30log_writers, 30name, 59navigation, 296Password, 92plugins, 143port, 92property, 59redirect_when_connected,
245route, 66, 298route_manager, 30router, 63serializers, 30service_manager, 30services, 31timeout, 202translate, 271uri, 298Username, 92validators, 30view_helpers, 30, 270width, 203wordLen, 202
kod kreskowy, 124komenda composer update, 28kontroler, 37, 40, 50, 61
ciężki, 54IndexController, 39lekki, 54tworzenie, 43, 44
Llayout, 109lista rozwijana, 119, 147
Mmanager
ControllerManager, 30ControllerPluginManager,
30FilterManager, 30FormElementManager, 30HydratorManager, 30
Poleć książkęKup książkę
S K O R O W I D Z 3 3 3
InputFilterManager, 30LogProcessorManager, 30LogWriterManager, 30RoutePluginManager, 30SerializerAdapterManager,
30ServiceLocator, 30ValidatorManager, 30ViewHelperManager, 30
Memecache, 13menu
główne, 295pojemnik główny, 299poziom zagnieżdżenia, 299
metadane, 111, 228metoda
__call, 59__invoke, 59, 125_initFrontController, 63addChild, 102addContent, 228addLangContent, 228addMetadata, 228addPage, 228addProcessor, 252addWriter, 252append, 60appendName, 59assertQuery, 325assertQueryContentContains,
325assertQueryCount, 325assertXpathQueryCount,
325assignContentToPage, 228authenticate, 196, 209between, 97bind, 133bootstrapForm, 283buildSqlString, 94captureEnd, 61, 113captureStart, 61, 113column, 95configureServiceManager,
326contentSent, 62delete, 55, 97, 99, 100deleteContent, 228
deletePage, 228deleteRow, 57deleteWith, 55detectVersion, 62dispatch, 61, 325, 326displayMessages, 254dump, 254, 257, 258, 261equalTo, 96escapeCss, 103escapeHtml, 103escapeHtmlAttr, 103escapeJs, 103escapeUrl, 103exchangeArray, 47execute, 93, 126executeDelete, 260executeInsert, 260executeUpdate, 260expression, 97extract, 200fetch, 93fetchAll, 92, 141, 143fetchOne, 92fetchRow, 141filter, 125, 126formElementError, 128formInput, 128formRow, 128from, 93, 94, 97generatePassword, 196get_object_vars, 142getAllContentsByPageID,
230getArrayCopy, 57getArticleContentByPage
Name, 230getArticleContentByUrl, 230getAutoloaderConfig, 219getavatarUrl, 56getBy, 131getByUserId, 131getConfig, 219getControllerConfig, 30getControllerPluginConfig,
30getCookie, 62getEvent, 61getEventManager, 61
getFiles, 62getFilterConfig, 30getForm, 188getFormElementConfig, 30getHeaders, 62getHydratorConfig, 30getInputFilter, 49getInputFilterConfig, 30getInputFilterSpecification,
280getLanguageList, 231getLogProcessorConfig, 30getLogWriterConfig, 30getLongMessage, 254getMediumMessage, 254getMessage, 188getPage, 228getPages, 228getPassword, 113getPluginManager, 61, 126getPost, 62getQuery, 62getRealm, 113getRequest, 61getResponse, 61getRoles, 247, 248getRouteConfig, 30getSerializerConfig, 30getServiceConfig, 30, 31getSqlString, 260getStaticContentByPageNa
me, 230getTable, 97getUploadedImages, 56getUsername, 113getValidatorConfig, 30getVersion, 62getView, 111getViewHelperConfig, 30greaterThan, 96greaterThanOrEqual, 96headersSent, 62headScript, 60htmlify, 301htpasswd, 173hydrate, 200identity, 113in, 97
Poleć książkęKup książkę
3 3 4 S K O R O W I D Z
metodainit, 177inlineScript, 60insert, 97, 99invoke, 283, 285isActive, 300isContentExists, 228isDelete, 62isFlashRequest, 62isGet, 62isNotNull, 97isNull, 97isPageExists, 228isPost, 62isPut, 62isValid, 122, 124isXmlHttpRequest, 62join, 94json_encode, 142lessThan, 96lessThanOrEqual, 96like, 96limit, 95literal, 96log, 251mockUsersTable, 327nest, 96notBetween, 97notEqualTo, 96notIn, 97notLike, 96offset, 95offsetGetName, 59offsetSet, 60onBoostrap, 244onBootstrap, 211, 220onDispatch, 61, 224onError, 244order, 95phpunit, 314populateValues, 133POST, 46predicate, 97prepareStatementForSql
Object, 94prepend, 60previewAction, 233prophesize, 327query, 93
render, 112, 284, 285, 291save, 55, 99, 100saveRow, 57seecontentsAction, 233select, 55, 93, 97, 98selectWith, 55, 260send, 62sendContent, 62sendHeaders, 62serialize, 143set, 60setAllowOverride, 326setAttribute, 46, 48setData, 47setEventManager, 61, 178setFormatter, 252setIdentifier, 254setInputFilters, 47setMaxDepth, 299setMessageCloseString, 223setMessageOpenFormat, 222setPartial, 300setPluginManager, 126setTemplate, 102setTerminal, 103setUiClass, 299setup, 314setView, 111sha512, 196, 200spl_object_hash, 142start, 213stripslashes, 231unnest, 96update, 55, 97, 99updateMetadata, 228updatePage, 228updateWith, 55values, 95where, 94, 96, 97, 141, 228
mock, 322, 324, 325, 326, 327model, 37, 39, 55, 139
ciężki, 54lekki, 54
MongDB, 253MongoDB, 252MOVE, 32MVC, 32, 61, 111, 240MySQL Workbench, 17
Nnarzędzie
bower, 153grunt, 153
nawigacja, 295link HTML, 302patchway, Patrz: patchwaypomocnicza, 299pozycja aktywna, 296, 300priorytet, 307skalowalność, 296
NPM, 152numer IP, 124
Oobraz, 120
Ppage, Patrz: stronapaginacja, Patrz: widok paginacjipatchway, 301plik
.phtml, 101404.phtml, 262, 263application.tests.config.php,
319composer.json, 28, 310config/global.php, 35config/local.php.dist, 36config/Module.config.php,
30CSS, 111, 152delete.phtml, 51edit.phtml, 49format, Patrz: formatglobal.php, 295, 296, 299, 310INI, 272JS, 152konfiguracyjny, 25, 27layout.phtml, 296local.php, 36MO, 273module.config.php, 63, 131,
271modules.config.php, 151
Poleć książkęKup książkę
S K O R O W I D Z 3 3 5
phpunit.xml, 310phpunit.xml.dist, 310PO, 272POT, 272public/index.php, 32szablonu, 104szablonu tłumaczeń,
Patrz: plik POTwidoku, 40, 47, 49, 102XML, 303zfc_rbac.global.php.dist, 245
pojemnik, 295, 300domyślny, 298główny, 299
poletekstowe, 120wyszukiwania, 120
polityka zabezpieczeń, 240Postman Launcher, 154, 160Protection Policy, Patrz:
polityka zabezpieczeńprzycisk, 120
RRBAC, 239, 247
strategia, Patrz: strategiatyp używania, 240
refaktoryzacja, 54reguła
dodawanie, 63zarządzanie, 64
REST, 155autoryzacja, 172, 173, 174tworzenie, 162, 163, 166
RESTClient, 160router, 63
Hostname, 65Literal, 66logowania, 207Method, 67Regex, 67Scheme, 68Segment, 68
RPC, 155opcje, 161testowanie, 160, 161tworzenie, 156, 157, 158, 189
Sserwer, 124silnik szablonów, 104, 107Smarty, 104, 106, 113sonda, 180, 183
aktywna, 187głosowanie, 188lista, 186
standard RFC-3164, 252strategia przekierowania, 244
RedirectStrategy, 244, 246,247
UnauthorizedStrategy, 244,245
strona, 295mapy, 303podstrona, 298
strumień danych PHP, 252Syslog, 252system
CMS, Patrz: CMSdebugowania, Patrz:
debugowanietranslacji tekstów, 269, 270,
272format, 271plugin, 274, 275, 276, 277
szyfrowanie jednostronne, 195
ścieżkaabsolutna, 127bazowa, 56, 58
Ttabela, 35, 97tag HTML, 111Template Engine, Patrz: silnik
szablonówtest, 309
aktualizacji użytkownika, 329funkcyjny, 322imitowanie zależności, 324integracyjny, 322jednostkowy, 309, 310, 321modelu
Fixtures, 312, 317, 318Rowset, 312, 313, 314,
316, 317parametry, 317uruchamianie, 311usunięcia użytkownika, 330z użyciem baz danych, 319
translator, 269, 270, 271, 272dat, 274, 276liczby mnogie dla
określonego języka, 274,277
walut, 274, 275trigger, 54Twig, 107, 108, 113
Uużytkownik, 113, 199
administrator, Patrz:administrator
edytor, 239gość, Patrz: gośćhasło, Patrz: hasłologowanie, 207, 210ranga
admin, 241tworzenie, 245
rejestrowanie, 193sesja, 211, 212, 214, 223zalogowany, 244, 247, 300
Vview helper, 128, 129
Wwalidator, 124, 125warstwa
API, Patrz: Apigilitykontrolera, Patrz: kontrolermodelu, Patrz: modelwidoku, Patrz: widok
wiadomość, 112widok, 39, 44, 58, 102, 111
definicja układu, Patrz:layout
klasa pomocnicza, 279, 283
Poleć książkęKup książkę
3 3 6 S K O R O W I D Z
warstwapaginacji, 146, 147, 149
link, 148panelu administratora, Patrz:
administrator panel widokszablon, 101tworzenie, 144
wiersz poleceń, 152wyrażenie regularne, 67, 125
XXAMPP, 20, 193, 266
instalowanie, 18
Zzabezpieczenie, 240
ControllerGuard, 242, 243ControllerPermissionsGuard,
242RouteGuard, 240RoutePermissionGuard, 241,
243zapytanie, 62, 92, 154
adres, 162AJAX, 151, 181CRUD, 95DELETE, 163GET, 155, 163mapowanie, 65parametr, 93, 141PATCH, 163POST, 155przekierowanie, 64
PUT, 155, 163SELECT, 260typ, 155
zdarzenieEVENT_DISPATCH_ERROR,244
Zendinstalowanie, 21komponent, 11konfiguracja, 22, 25, 35
dodawanie, 26moduł, 30
plik konfiguracyjny, Patrz:plik konfiguracyjny
plugin, 11społeczność, 14tryb deweloperski, 25walidator, 124, 125wersja, 13
Zend ACL, 239Zend Authentication, 12Zend Captcha, 193Zend Certified Engineer, 14Zend Code, 154Zend Config, 12Zend Crypt, 12Zend Debug, 254Zend Dom, 325Zend DOM, 12Zend Event Manager, 12, 62, 178
instancja, 61Zend File, 12Zend Filter, 154Zwnd FlashMessenger, 222Zend Form, 115, 120
Zend Framework, Patrz: ZendZend Hydrator, 154Zend InputFilter, 154Zend Log, 251Zend Mail, 12Zend Module Manager, 13Zend Monitor, 252Zend MVC, 12Zend MVC-i18n integration,
12, 269Zend Navigation, 295, 301, 302Zend Paginator, 139Zend Plugin Manager, 111,
112, 113Zend Router, 32Zend Row Gateway, 99Zend Serializer, 139Zend Service Manager, 12, 13,
32, 56, 243Zend SQL Abstraction, 93Zend Table Gateway, 97Zend Toolbar, 12Zend Validator, 12, 154Zend View, 12, 101, 103, 105,
113Zend Xml2Json, 177, 186ZendApplication, 35ZF2Rapid, 53ZFC Admin, 217ZFTool, 53
żądanie nieautoryzowane, 244
Poleć książkęKup książkę