Projektowanie i architektura frameworka w języku PHP. Tomasz P.F. Kowalczyk http://kowalczyk.cc



Podobne dokumenty
Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

Programowanie obiektowe

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Programowanie obiektowe

Programowanie zorientowane obiektowo. Mateusz Kołecki

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Oracle PL/SQL. Paweł Rajba.

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Wprowadzenie do programowania aplikacji mobilnych

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

PHP 5 język obiektowy

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Program szkolenia: Symfony, nowoczesny framework PHP

Django : praktyczne tworzenie aplikacji sieciowych / Antonio Mele. Gliwice, cop Spis treści

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Wykład 4. Projektowanie. MIS n Inżynieria oprogramowania Październik 2014

Plik pobrano z Tytuł: Wzorce projektowe, cz. 2 Strategy Ostatnia aktualizacja:

PHP revisited - odświerzenie spojrzenia na programowanie w PHP

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Programowanie Zespołowe

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Podstawy wzorca MVC MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

Ruby i Ruby on Rails. Mateusz Drożdżyński

Kurs WWW. Paweł Rajba.

Programowanie w Ruby

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Analiza i projektowanie aplikacji Java

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Pico. Wstęp do kontenerów IoC.

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

Programowanie Komponentowe WebAPI

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

Kurs języka Ruby. Ruby on Rails ActionPack

Adaptywny kod : zwinne programowanie, wzorce projektowe i SOLID-ne zasady / Gary McLean Hall. Gliwice, cop Spis treści

Wzorce projektowe. dr inż. Marcin Pietroo

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Wzorce projektowe. dr inż. Marcin Pietroo

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.

Wzorce prezentacji internetowych

MVC w praktyce tworzymy system artykułów. cz. 1

Klasy abstrakcyjne i interfejsy

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016

Aplikacje RMI

Wzorce logiki dziedziny

REFERAT O PRACY DYPLOMOWEJ

Wstęp. Ale po co? Implementacja

Programowanie obiektowe

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Bazy danych 2. Wykład 1

Technologie internetowe ASP.NET Core. Paweł Rajba

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Programowanie w Ruby

Baza danych i ORM mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Testowanie aplikacji. Kurs języka Ruby

Model semistrukturalny

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Wzorce architektoniczne

Modelowanie i Programowanie Obiektowe

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Pakiety i interfejsy. Tomasz Borzyszkowski

Specyfikacja implementacyjna aplikacji serwerowej

1 Wprowadzenie do J2EE

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

EXSO-CORE - specyfikacja

Programowanie MorphX Ax

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

Przykładowa implementacja

Część I Tworzenie baz danych SQL Server na potrzeby przechowywania danych

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień Uniwersytet Warszawski

Contexts and Dependency Injection (CDI) Autor wykładu: Marek Wojciechowski

Czym jest Ruby on Rails?

Rok akademicki: 2030/2031 Kod: ZIE s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Aplikacje w środowisku Java

Spring Web MVC, Spring DI

Agenda. Wstęp Zmiany Co nowego dla web developerów? Nowości we front-end developingu Czego spodziewać się może końcowy użytkownik?

Instrukcja laboratoryjna

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Projektowani Systemów Inf.

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Transkrypt:

Projektowanie i architektura frameworka w języku PHP Tomasz P.F. Kowalczyk http://kowalczyk.cc

Spis treści Why new framework? Mechanizmy języka PHP Wzorce projektowe Architektura Przepływ sterowania Zalety i wady Podsumowanie 2

Why new framework? I Tried some of them Symfony CakePHP Zend Framework Too much "frame", not enough "work" Complicated structure Flat learning curve Attempt to create "final product" Absolutely essential features, yet useful tool 3

Why new framework? II Writing new framework is a bad idea Programming is full of bad ideas That's why I'm going to do it ;] Personal view Wish to have something "own" Compare result with other projects Deal with problems in such project Verify my skills and experience Test all the ideas I had through years 4

Mechanizmy języka PHP Nowości znane z PHP 5.3 Przestrzenie nazw [namespaces] namespace ThunderFrame\Controllers; Autoloading z wykorzystaniem przestrzeni nazw Stała CLASS zawiera przestrzeń nazw klasy require_once( CLASS.'.php'); Late Static Binding Dziedziczenie statycznych metod 5

Wzorce projektowe Model View Controller [MVC] Dependency Injection [DI] Design by Contract [DbC] Layer Supertype 6

Model View Controller Próba implementacji "prawdziwego" MVC Czym jest "prawdziwe" MVC? CCV Model to nie CRUD na tabelach CCC Widok to nie tylko wyświetlanie zmiennych Wszystko zależy od programisty Kontroler nie pobiera danych z modelu Widok korzysta wyłącznie z interfejsu modelu Każdy element ma jasno zdefiniowany cel Single Responsibility ["S" z zasady SOLID] 7

Dependency Injection I Tzw. "wstrzykiwanie zależności" Elementy decydujące są przekazywane do elementu zależnego. Drwal potrzebuje siekiery aby ściąć drzewo [uzyskać pień] $trunk = $lumberjack->cut(new Tree('Oak'), new Axe('wood')); Rodzaje "wstrzykiwania" Constructor injection Method injection 8

Dependency Injection II Inversion of Control [IoC] Duże elementy są zależne od mniejszych Dependency Injection Container Przekazywanie zależności w sposób usystematyzowany Poprzedni przykład $trunk = $lumberjack->cut(new DI_Container('tree' => new Tree('Oak'), 'axe' => new Axe('wood'))); 9

Design by Contract Znak towarowy zastrzeżony przez Eiffel Software, koncept pochodzi z języka Eiffel Koncept sterowania interfejsami zamiast klas bazowych Specyfikacja powinna definiować jakie akcje wykonują obiekty o określonym przeznaczeniu Przykład interface ICuttable { function cut($what, $with); } class LumberJack implements ICuttable {} class Tree implements ICuttable {} 10

Layer Supertype Struktura podzielona na warstwy o określonym przeznaczeniu Wszystkie klasy dziedziczą po odpowiedniej klasie bazowej danej warstwy Klasa bazowa może implementować interfejsy związane z funkcjonalnościami warstwy połączenie z wzorcem DbC Przykład class BaseTree implements ICuttable {} class Oak extends BaseTree {} 11

Architektura Router Kontroler Model Connector - "łącznik" Widok Partial Layout 12

Router Definiuje relacje pomiędzy parametrami żądania a elementami aplikacji internetowej Decyduje o wyborze kontrolera oraz parametrach wywołania, jakie zostaną do niego przekazane Pozwala na budowanie adresów URL na podstawie przekazanych parametrów 13

Kontroler Zarządza przepływem sterowania Wybiera akcję, którą należy wywołać i przekazuje do niej odpowiednie parametry Do niego należą wszelkie operacje związane z dostępem autoryzacja i uwierzytelnianie. Wybiera zestaw modeli oraz przekazuje ich instancje odpowiednim widokom 14

Connector Reprezentacja "połączenia" do źródła danych Przykładowe źródła danych Baza danych SQL Plik tekstowy [CSV, XML, YAML] Baza danych SQLite Struktura zapewniająca abstrakcję pozwalającą na uogólnienie "połączenia" na różne typy źródeł danych 15

Model Obiektowa reprezentacja pewnego bytu tworzonego z danych pobranych przy użyciu odpowiedniego Connectora Zawiera interfejs pozwalający wykonywanie żądanych operacji na danych powiązanych z tym bytem Model to nie reprezentacja tabeli w bazie danych! 16

Widok Ogólna reprezentacja wyjściowej formy odpowiedzi na żądanie Różne typy wyjściowego formatu danych: HTML XML PDF Widok sam pobiera dane z modelu poprzez odpowiednio zdefiniowane interfejsy 17

Layout Główny element kodu wynikowego, zawiera w sobie "partiale" mniejsze elementy, które można wykorzystać w wielu miejscach Pewien wariant wzorca Dekorator Kod wynikowy poszczególnych partiali jest pobierany i wstawiany przed wyświetleniem samego layoutu 18

Partial "Partial", ang. "część" Są to fragmenty strony, które można wyświetlać w layoucie Partiale mogą zawierać się w sobie, tworząc hierarchiczną strukturę zależności Przykłady podobnych rozwiązań: Moduły w Joomli Widgety w WordPressie 19

Przepływ sterowania Interpretacja żądania Router wybór kontrolera Dispatcher uruchomienie kontrolera Kontroler wybór akcji Akcja wybór modeli i widoków Widok generowanie kodu wyjściowego 20

Zalety i wady Zalety Rozszerzalna struktura Trwała architektura Wady Brak testów Wynajdywanie koła po raz kolejny 21

Podsumowanie Dziękuję za uwagę array_walk($sleepingpeople, ' wakeup'); Dziękuję za uwagę jeszcze raz Prezentacja będzie dostępna na moim blogu Google: "prezentacja na seminarium" Mam nadzieję, że było mniej "grobowo" Zmieniłem tło na jaśniejsze ;] 22

anyquestions('?') or die('the end'); 23