SlideShare a Scribd company logo
1 of 44
Download to read offline
Wprowadzenie do implementacji
  architektur plug-in w PHP

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

- Albert Einstein
Funkcjonalność




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

- Wikipedia, Modular design
Plug-in



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



                 System
               architektury
                 plug-in            Miejsce na dalszy rozwój



                Usługi systemu
„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
Spoiler:

Darwin, Linux, Windows NT
   nie są mikro-jądrami
XULRunner
Plug-in powinien skupić się
na wykonaniu pojedynczego zadania
Nie ArticlesPlugin

                      tylko:

● PagePlugin – wyświetlanie i edycja,
● CategoriesPlugin – kategoryzacja,

● TagPlugin – tagi,

● CommentsPlugin – komentarze,

● ScorePlugin – ocenianie,
Nie UsersPlugin

                    tylko:

● AuthPlugin – ACL i autoryzacja,
● LoginPlugin – logowanie,

● RegisterPlugin – rejestracja,

● UserDataPlugin – dane użytkownika,
Dostęp do bazy danych?

       Sesje?

    Także plug-in
(mikro) jądro

Udostępnienie fundamentalnego
  środowiska działania plug-in
Jądro i zdarzenia

Konfiguracja      Rejestracja               Uruchomienie
środowiska        i konfiguracja pluginów   aplikacji
Cykl życia pluginu:



  Instalacja,
  → Uruchomienie,
  → Działanie,
  Aktualizacja
  → Zatrzymanie,
  Usunięcie.
Zarządzanie pluginami
   Tak, to też plugin
Zależności

                                   Udostępnianie „narzędzi”


Pliki multimedialne
                                                          Instalacja

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

                                           Reagowanie
          Aktualizacja


                                   Nadpisywanie
Abstrakcja                                                System
                        M        C        V
bazy danych                                               szablonów




              Obsługa
                            Wywołanie         Odpowiedź
              żądania
                              akcji             HTTP
               HTTP




                            Zarządzanie
              Jądro           plug-in         Plug-iny
Plug-in musi mieć możliwość komunikacji
       z innymi częściami systemu
           (i z innymi pluginami)
Luźne wiązania
Pośrednik
Programowanie zdarzeniowe
Wysłanie




  Odebranie
Bąbelkowanie
Zatrzymywanie bąbelkowania
I funkcje domyślne też
getContext()




Obiekt kontekstu naszym pośrednikiem
          (wielozadaniowym)
Wstrzykiwanie zależności umożliwia
rozpropagowywanie obiektu kontekstu
Każdy plug-in
musi posiadać dostęp do własnego
        obiektu kontekstu

         Każda klasa.
         Każda usługa.
Usługi?
Usługa to zestaw funkcji posiadających
zunifikowane API, implementujące rozwiązanie
          pewnego problemu (uff...)
Dlaczego nie wszędzie zdarzenia?
 Na zdarzenie nie musi reagować
         żadna funkcja
Plugin != Usługa

Plugin > Usługa
LogsService – logowanie w aplikacji.

            Pluginy?
         LogsTxtPlugin
        LogsNullPlugin

       Zunifikowany interfejs?
          log( $msg )
          warn( $msg )
          err( $msg )
Kontekst musi udostępniać usługi
(zachowywać się jak kontener zależności)
Narzędzia


  Programowanie zdarzeniowe.
          Wzorzec filtra.
      Wzorzec dekoratora.
        Wzorzec strategii.
          Obiekty proxy.
Kontener wstrzykiwania zależności.
Stabilność

   Dziel i rządź                   GTD programowania

                          Zalety
Zrównoleglenie prac
                                     Mniej zależności

             Bezpieczeństwo
Dziękuję za uwagę

More Related Content

Similar to Wprowadzenie do implementacji architektur plug-in w PHP

Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Adrian Kalbarczyk
 
Armedge documentation
Armedge documentationArmedge documentation
Armedge documentationskowronkow
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...Michal Furmankiewicz
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
 
Domain Driven Development
Domain Driven DevelopmentDomain Driven Development
Domain Driven DevelopmentKonrad Russa
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji androidSages
 
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDNPLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDNPROIDEA
 
Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?javOnet
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftBiznes 2.0
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureWebhosting.pl
 
Artur Żarski, PHP na Windows
Artur Żarski, PHP na WindowsArtur Żarski, PHP na Windows
Artur Żarski, PHP na WindowsWebhosting.pl
 
Testy jednostkowe - PHPUnit
Testy jednostkowe - PHPUnitTesty jednostkowe - PHPUnit
Testy jednostkowe - PHPUnitPHPstokPHPstok
 
MvvmCross na przykładach w Xamarin.Android
MvvmCross na przykładach w Xamarin.AndroidMvvmCross na przykładach w Xamarin.Android
MvvmCross na przykładach w Xamarin.AndroidIn'saneLab
 
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?PHPCon Poland
 

Similar to Wprowadzenie do implementacji architektur plug-in w PHP (20)

Ext js
Ext jsExt js
Ext js
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)
 
Armedge documentation
Armedge documentationArmedge documentation
Armedge documentation
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
 
Domain Driven Development
Domain Driven DevelopmentDomain Driven Development
Domain Driven Development
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
 
Isyp07
Isyp07Isyp07
Isyp07
 
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDNPLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
 
Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows Azure
 
Budowanie sieci Grid
Budowanie sieci GridBudowanie sieci Grid
Budowanie sieci Grid
 
Artur Żarski, PHP na Windows
Artur Żarski, PHP na WindowsArtur Żarski, PHP na Windows
Artur Żarski, PHP na Windows
 
university day 1
university day 1university day 1
university day 1
 
Testy jednostkowe - PHPUnit
Testy jednostkowe - PHPUnitTesty jednostkowe - PHPUnit
Testy jednostkowe - PHPUnit
 
WF w zastosowaniach Web
WF w zastosowaniach WebWF w zastosowaniach Web
WF w zastosowaniach Web
 
Symfony2 showcase
Symfony2 showcaseSymfony2 showcase
Symfony2 showcase
 
MvvmCross na przykładach w Xamarin.Android
MvvmCross na przykładach w Xamarin.AndroidMvvmCross na przykładach w Xamarin.Android
MvvmCross na przykładach w Xamarin.Android
 
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
 

More from PHPCon Poland

PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHPCon Poland
 
Konstruowanie umów z nabywcami aplikacji sieciowych
Konstruowanie umów z nabywcami aplikacji sieciowychKonstruowanie umów z nabywcami aplikacji sieciowych
Konstruowanie umów z nabywcami aplikacji sieciowychPHPCon Poland
 
Drupal Application Framework - metoda na aplikację sieciową
Drupal Application Framework - metoda na aplikację sieciowąDrupal Application Framework - metoda na aplikację sieciową
Drupal Application Framework - metoda na aplikację sieciowąPHPCon Poland
 
PHP i memcached, zaawansowane przypadki użycia
PHP i memcached, zaawansowane przypadki użyciaPHP i memcached, zaawansowane przypadki użycia
PHP i memcached, zaawansowane przypadki użyciaPHPCon Poland
 
Systemy cache'owania danych w PHP
Systemy cache'owania danych w PHPSystemy cache'owania danych w PHP
Systemy cache'owania danych w PHPPHPCon Poland
 
Ochrona witryny przed spamem
Ochrona witryny przed spamemOchrona witryny przed spamem
Ochrona witryny przed spamemPHPCon Poland
 
Grzechy główne programistów (nie tylko PHP)
Grzechy główne programistów (nie tylko PHP)Grzechy główne programistów (nie tylko PHP)
Grzechy główne programistów (nie tylko PHP)PHPCon Poland
 
Git - rozproszony system kontroli wersji
Git - rozproszony system kontroli wersjiGit - rozproszony system kontroli wersji
Git - rozproszony system kontroli wersjiPHPCon Poland
 

More from PHPCon Poland (9)

PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubi
 
Konstruowanie umów z nabywcami aplikacji sieciowych
Konstruowanie umów z nabywcami aplikacji sieciowychKonstruowanie umów z nabywcami aplikacji sieciowych
Konstruowanie umów z nabywcami aplikacji sieciowych
 
Drupal Application Framework - metoda na aplikację sieciową
Drupal Application Framework - metoda na aplikację sieciowąDrupal Application Framework - metoda na aplikację sieciową
Drupal Application Framework - metoda na aplikację sieciową
 
PHP i memcached, zaawansowane przypadki użycia
PHP i memcached, zaawansowane przypadki użyciaPHP i memcached, zaawansowane przypadki użycia
PHP i memcached, zaawansowane przypadki użycia
 
Open Power Template
Open Power TemplateOpen Power Template
Open Power Template
 
Systemy cache'owania danych w PHP
Systemy cache'owania danych w PHPSystemy cache'owania danych w PHP
Systemy cache'owania danych w PHP
 
Ochrona witryny przed spamem
Ochrona witryny przed spamemOchrona witryny przed spamem
Ochrona witryny przed spamem
 
Grzechy główne programistów (nie tylko PHP)
Grzechy główne programistów (nie tylko PHP)Grzechy główne programistów (nie tylko PHP)
Grzechy główne programistów (nie tylko PHP)
 
Git - rozproszony system kontroli wersji
Git - rozproszony system kontroli wersjiGit - rozproszony system kontroli wersji
Git - rozproszony system kontroli wersji
 

Wprowadzenie do implementacji architektur plug-in w PHP