Kurs dzieli się na dwa moduły, które są także oferowane jako osobne szkolenia Symfony 4 i Doctrine 2 – aplikacje webowe i HTML5 i zaawansowany JavaScript.
I. Symfony 4 i Doctrine 2 – aplikacje webowe
- PHP w nowoczesnych aplikacjach webowych – wprowadzenie
- Obiektowość i MVC
- Architektura aplikacji webowych
- Podstawowe praktyki i koncepcje organizacji kodu
- Symfony 4 – z lotu ptaka
- Architektura standardowej aplikacji
- Fundamentalne i akcydentalne elementy (Request, Response, HttpKernel, Controller, Service Container)
- Modularność, najczęściej używane bundle
- Instalacja i konfiguracja typowej aplikacji Symfony 4, użycie narzędzia composer oraz konsoli Symfony
- Implementacja standardów PSR i dobre praktyki związane z formatowaniem kodu
- Podstawowe składniki aplikacji
- Silnik szablonów Twig
- szablony, dziedziczenie szablonów
- tagi i filtry; tworzenie własnych rozszerzeń Twiga
- Organizacja szablonów
- Routing i kontrolery
- wywoływanie akcji: URL i parametry
- usługi udostępnione przez standardowy kontroler
- obsługa sesji, zwykłej i typu flash;
- forwarding i przekierowanie
- wyświetlanie szablonów
- wyświetlanie odpowiedzi w innych formatach (JSON, XML)
- obsługa błędów
- Uruchamianie aplikacji na serwerze wbudowanym i lokalnym
- Dobre praktyki związane z przechowywaniem plików statycznych (js, css, obrazki)
- Omówienie różnic trybów działania aplikacji (dev, prod)
- System zdarzeń
- Dostępne zdarzenia
- Listenery i Subscribery
- Zdarzenia związane z obsługą encji
- Silnik szablonów Twig
- Formularze i walidacja
- Walidacja danych
- formularz i model formularza; FormBuilder i schemat typowego użycia formularzy
- wbudowane i własne typy pól (e.g. pola tekstowe, guziki, kalendarz, pola wyboru…)
- integracja walidacji i formularzy: obsługa formularza, zgadywanie typu pola;
- integracja Twiga i formularzy: helpery formularza i własne tematy, wyświetlanie formularza automatyczne lub ręczne,
- złożony model: formularze wbudowane, kolekcje formularzy wbudowanych, transformacje modelu;
- dynamicznie modyfikowalny formularz
- zabezpieczenie przeciwko CSRF
- Uwierzytelnienie i autoryzacja
- konfiguracja uwierzytelnienia – użytkownicy, grupy, role
- dostęp do modułów aplikacji: zabezpieczanie ścieżek, metod, kontrolerów
- dostęp do konkretnych danych
- podstawowe strategie ACL (Access Control Lists) i Voters
- Doctrine 2
- różne modele ORM i ich konsekwencje: Active Record kontra Transparent Persistence;
- model pracy, wzorce projektowe (unit of work, identity map, repository / dao)
- konfiguracja i integracja z własnym projektem
- sposoby generacji encji
- ręczne tworzenie i poprawianie mappingów:
- encje, klucze główne (proste i złożone), generatory kluczy głównych
- pola typu prostego i asocjacje: asoscjacje jedno- i dwukierunkowe, strona nadrzędna i podrzędna
- podstawy pracy z encjami: dodawanie, usuwanie, modyfikacja danych w bazie
- kwerendy: Doctrine Query Language, Criteria, repozytoria
- Wydajność i optymalizacja – leniwe oraz gorliwe wczytywanie relacji, doczytywanie danych kwerendami i relacjami, strategie stronicowania, kaskadowanie operacji
- Sposoby przygotowania danych testowych (DoctrineFixtures i Faker)
- Zagadnienia zaawansowane
- rejestracja i wykorzystywanie serwisów, Service Container; alternatywne techniki: YAML, XML, PHP
- Expression Language
- serwisy i ich zależności – dependency injection (constructor, setter, property)
- serwisy w funkcji kontrolerów
II. HTML5 i zaawansowany Javascript
- Współczesny przybornik programisty Front End
- ES6, ES7, ES8 – omówienie różnic i zmian w programowaniu JS
- budowa współczesnych aplikacji JS
- Brunch
- Omówienie różnic Webpack i Grunt/Gulp
- NPM – Node Package Manager
- Bootstrap
- SASS
- Programowanie Front Endu w JavaScript
- jQuery
- wprowadzenie do frameworków JS
- przekrojowo o React
- Inne podejście – Typescript i Angular
- wstęp do TypeScript
- Angular
Uwaga: ponieważ w świecie nowoczesnych technologii czas biegnie szybko, zastrzegamy sobie prawo do aktualizacji programu, a w ramach niej – zamianę opisanych wyżej technologii na bliskie odpowiedniki (np. jeżeli AngularJs straci na popularność względem EmberJs, na szkoleniu możemy przestawić EmberJs itd.)