44
Wprowadzenie do implementacji architektur plug-in w PHP Damian Tylczyński

Wprowadzenie do implementacji architektur plug-in w PHP

Embed Size (px)

DESCRIPTION

Autor: Damian TylczyńskiAktualne serwisy internetowe coraz częściej przypominają rozbudowane aplikacje, tworzone w dużych zespołach programistów z myślą o długofalowym rozwoju. Opowiem jak okiełznać pokaźne bazy kodu i umożliwić elastyczną rozbudowę aplikacji dzięki architekturom typu plug-in.

Citation preview

Page 1: Wprowadzenie do implementacji architektur plug-in w PHP

Wprowadzenie do implementacjiarchitektur plug-in w PHP

Damian Tylczyński

Page 2: Wprowadzenie do implementacji architektur plug-in w PHP

„Gdybym wiedział co robię, to przecież nie była by praca badawcza„

- Albert Einstein

Page 3: Wprowadzenie do implementacji architektur plug-in w PHP

Systemmonolityczny

Funkcjonalność

Page 4: Wprowadzenie do implementacji architektur plug-in w PHP

„smaller parts (modules) that can be independently created and then used in different systems to drive multiple functionalities”

- Wikipedia, Modular design

Page 5: Wprowadzenie do implementacji architektur plug-in w PHP

Systemarchitektury

plug-in

Usługi systemu

Plug-in

Niezmienna postać,zmienna funkcjonalnośćna żądanie

Stabilne API

Miejsce na dalszy rozwój

Page 6: Wprowadzenie do implementacji architektur plug-in w PHP

„LINUX is a monolithic style system. This is a giant step back into the 1970s. That is like taking an existing, working C program and rewriting it in BASIC. To me, writing a monolithic system in 1991 is a truly poor idea„

- Andy Tanenbaum

Page 7: Wprowadzenie do implementacji architektur plug-in w PHP

Spoiler:

Darwin, Linux, Windows NTnie są mikro-jądrami

Page 8: Wprowadzenie do implementacji architektur plug-in w PHP

XULRunner

Page 9: Wprowadzenie do implementacji architektur plug-in w PHP
Page 10: Wprowadzenie do implementacji architektur plug-in w PHP

Plug-in powinien skupić sięna wykonaniu pojedynczego zadania

Page 11: Wprowadzenie do implementacji architektur plug-in w PHP

Nie ArticlesPlugin

tylko:

● PagePlugin – wyświetlanie i edycja,● CategoriesPlugin – kategoryzacja,● TagPlugin – tagi,● CommentsPlugin – komentarze,● ScorePlugin – ocenianie,

Page 12: Wprowadzenie do implementacji architektur plug-in w PHP

Nie UsersPlugin

tylko:

● AuthPlugin – ACL i autoryzacja,● LoginPlugin – logowanie,● RegisterPlugin – rejestracja,● UserDataPlugin – dane użytkownika,

Page 13: Wprowadzenie do implementacji architektur plug-in w PHP

Dostęp do bazy danych?

Sesje?

Także plug-in

Page 14: Wprowadzenie do implementacji architektur plug-in w PHP

(mikro) jądro

Udostępnienie fundamentalnego środowiska działania plug-in

Page 15: Wprowadzenie do implementacji architektur plug-in w PHP

Konfiguracjaśrodowiska

Jądro i zdarzenia

Rejestracjai konfiguracja pluginów

Uruchomienieaplikacji

Page 16: Wprowadzenie do implementacji architektur plug-in w PHP

Instalacja,→ Uruchomienie,→ Działanie, Aktualizacja→ Zatrzymanie, Usunięcie.

Cykl życia pluginu:

Page 17: Wprowadzenie do implementacji architektur plug-in w PHP

Zarządzanie pluginamiTak, to też plugin

Page 18: Wprowadzenie do implementacji architektur plug-in w PHP

Plug-in to nie tylko „jakaś”funkcja do wywołania

Zależności

Instalacja

AktualizacjaReagowanie

Pliki multimedialne

Nadpisywanie

Udostępnianie „narzędzi”

Page 19: Wprowadzenie do implementacji architektur plug-in w PHP

JądroZarządzanie

plug-in

Wywołanieakcji

Zarządzanieplug-in

ObsługażądaniaHTTP

OdpowiedźHTTP

Plug-iny

M VCAbstrakcjabazy danych

Systemszablonów

Page 20: Wprowadzenie do implementacji architektur plug-in w PHP

Plug-in musi mieć możliwość komunikacjiz innymi częściami systemu

(i z innymi pluginami)

Page 21: Wprowadzenie do implementacji architektur plug-in w PHP
Page 22: Wprowadzenie do implementacji architektur plug-in w PHP

Luźne wiązania

Page 23: Wprowadzenie do implementacji architektur plug-in w PHP

Pośrednik

Page 24: Wprowadzenie do implementacji architektur plug-in w PHP

Programowanie zdarzeniowe

Page 25: Wprowadzenie do implementacji architektur plug-in w PHP

Wysłanie

Odebranie

Page 26: Wprowadzenie do implementacji architektur plug-in w PHP

Bąbelkowanie

Page 27: Wprowadzenie do implementacji architektur plug-in w PHP

Zatrzymywanie bąbelkowania

Page 28: Wprowadzenie do implementacji architektur plug-in w PHP
Page 29: Wprowadzenie do implementacji architektur plug-in w PHP

I funkcje domyślne też

Page 30: Wprowadzenie do implementacji architektur plug-in w PHP

Obiekt kontekstu naszym pośrednikiem(wielozadaniowym)

getContext()

Page 31: Wprowadzenie do implementacji architektur plug-in w PHP

Wstrzykiwanie zależności umożliwiarozpropagowywanie obiektu kontekstu

Page 32: Wprowadzenie do implementacji architektur plug-in w PHP
Page 33: Wprowadzenie do implementacji architektur plug-in w PHP

Każdy plug-inmusi posiadać dostęp do własnego

obiektu kontekstu

Każda klasa.Każda usługa.

Page 34: Wprowadzenie do implementacji architektur plug-in w PHP

Usługi?

Page 35: Wprowadzenie do implementacji architektur plug-in w PHP

Usługa to zestaw funkcji posiadających zunifikowane API, implementujące rozwiązanie

pewnego problemu (uff...)

Page 36: Wprowadzenie do implementacji architektur plug-in w PHP

Dlaczego nie wszędzie zdarzenia?Na zdarzenie nie musi reagować

żadna funkcja

Page 37: Wprowadzenie do implementacji architektur plug-in w PHP

Plugin != Usługa

Plugin > Usługa

Page 38: Wprowadzenie do implementacji architektur plug-in w PHP

LogsService – logowanie w aplikacji.

Pluginy?LogsTxtPluginLogsNullPlugin

Zunifikowany interfejs?log( $msg )warn( $msg )err( $msg )

Page 39: Wprowadzenie do implementacji architektur plug-in w PHP

Kontekst musi udostępniać usługi(zachowywać się jak kontener zależności)

Page 40: Wprowadzenie do implementacji architektur plug-in w PHP
Page 41: Wprowadzenie do implementacji architektur plug-in w PHP

Programowanie zdarzeniowe.Wzorzec filtra.

Wzorzec dekoratora.Wzorzec strategii.

Obiekty proxy.Kontener wstrzykiwania zależności.

Narzędzia

Page 42: Wprowadzenie do implementacji architektur plug-in w PHP
Page 43: Wprowadzenie do implementacji architektur plug-in w PHP

Zalety

Dziel i rządź GTD programowania

Bezpieczeństwo

Mniej zależnościZrównoleglenie prac

Stabilność

Page 44: Wprowadzenie do implementacji architektur plug-in w PHP

Dziękuję za uwagę