SlideShare a Scribd company logo
1 of 46
Download to read offline
Michał Łukaszewski
Intel
Software Engineer
Budowanie aplikacji PHP
bez użycia frameworków
Plan historyjki
• Smuteczki
• Mądrzenie się
• Wnioski
Smuteczki
Czemu się czepiam frameworków?
Problemy jakie rozwiązują
Rapid Development
Te, które same stworzyły
Problemy jakie stwarzają
• Mnóstwo kodu
Problemy jakie stwarzają
• Mnóstwo kodu
• Korzystasz z kodu, którego nie rozumiesz
• Opcache ma limity
• Zaczynasz wykorzystywać rozwiązania, które „dostałeś”, a nie tych, których
na danym etapie projektu naprawdę potrzebujesz
Problemy jakie stwarzają
• Mnóstwo kodu
• Mnóstwo zależności
Casus Left-pad gate
Problemy jakie stwarzają
• Mnóstwo kodu
• Mnóstwo zależności
• Mnóstwo dokumentacji
Problemy jakie stwarzają
• Mnóstwo kodu
• Mnóstwo zależności
• Mnóstwo dokumentacji kiepskiej dokumentacji
Problemy jakie stwarzają
• Mnóstwo kodu
• Mnóstwo zależności
• Mnóstwo dokumentacji kiepskiej dokumentacji
• Opóźnione aktualizacje komponentów
Problemy jakie stwarzają
• Mnóstwo kodu
• Mnóstwo zależności
• Mnóstwo dokumentacji kiepskiej dokumentacji
• Opóźnione aktualizacje komponentów
• Latami utrzymywana zgodność ze starszymi wersjami środowisk
Problemy jakie stwarzają
• Mnóstwo kodu
• Mnóstwo zależności
• Mnóstwo dokumentacji kiepskiej dokumentacji
• Opóźnione aktualizacje komponentów
• Latami utrzymywana zgodność ze starszymi wersjami środowisk
• Są coraz wolniejsze i nikogo to nie obchodzi
Problemy jakie stwarzają
• Mnóstwo kodu
• Mnóstwo zależności
• Mnóstwo dokumentacji kiepskiej dokumentacji
• Opóźnione aktualizacje komponentów
• Latami utrzymywana zgodność ze starszymi wersjami środowisk
• Są coraz wolniejsze i nikogo to nie obchodzi
• Brak kontroli nad bezpieczeństwem (np. OWASP A9)
Problemy jakie stwarzają
• Mnóstwo kodu
• Mnóstwo zależności
• Mnóstwo dokumentacji kiepskiej dokumentacji
• Opóźnione aktualizacje komponentów
• Latami utrzymywana zgodność ze starszymi wersjami środowisk
• Są coraz wolniejsze i nikogo to nie obchodzi
• Brak kontroli nad bezpieczeństwem (np. OWASP A9)
• Zależności jego zależności
Problemy jakie stwarzają
• Mnóstwo kodu
• Mnóstwo zależności
• Mnóstwo dokumentacji kiepskiej dokumentacji
• Opóźnione aktualizacje komponentów
• Latami utrzymywana zgodność ze starszymi wersjami środowisk
• Są coraz wolniejsze i nikogo to nie obchodzi
• Brak kontroli nad bezpieczeństwem (np. OWASP A9)
• Zależności jego zależności
• Degeneracja umysłowa programistów
Wojny frameworków
Programista frameworka
• Dopasowuje świat do frameworka
• Spędza godziny wertując dokumentację frameworka
• Która i tak go okłamuje, więc potem zamęcza innych na grupach dyskusyjnych
• Każde rozwiązanie czy architektura musi pasować do frameworka
• Coś co nie jest w bundlu – nie istnieje
• Rozwiązuje problemy stwarzane przez framework, a nie przypadki biznesowe.
• Święcie wierzy, że reszta świata się myli
Mądrzenie się
Czego tak naprawdę potrzebujemy
Czego tak naprawdę potrzebujemy
Router/Dispatcher
Czego tak naprawdę potrzebujemy
Router/Dispatcher Responder/Renderer
Warstwy, ogry mają warstwy
Router/Dispatcher Responder/Renderer
Magic/Unicorns/Fairies
Warstwy, ogry mają warstwy
Router/Dispatcher Responder/Renderer
Magic/Unicorns/Fairies
Data Source
Warstwy, ogry mają warstwy
Router/Dispatcher Responder/Renderer
Magic/Unicorns/Fairies
Data Source
Serializers
Warstwy, ogry mają warstwy
Router/Dispatcher Responder/Renderer
Magic/Unicorns/Fairies
Data Source
SerializersValidators
Warstwy, ogry mają warstwy
Router/Dispatcher Responder/Renderer
Magic/Unicorns/Fairies
Data Source
SerializersValidators
Cache
Warstwy, ogry mają warstwy
Router/Dispatcher Responder/Renderer
Magic/Unicorns/Fairies
Data Source
SerializersValidators
Cache
Cache
Warstwy, ogry mają warstwy
Router/Dispatcher Responder/Renderer
Magic/Unicorns/Fairies
Data Source
SerializersValidators
Cache
Cache
Cache
Warstwy, ogry mają warstwy
Router/Dispatcher Responder/Renderer
Magic/Unicorns/Fairies
Data Source
SerializersValidators
Cache
Cache
Cache
Cache
Warstwy, ogry mają warstwy
Router/Dispatcher Responder/Renderer
Magic/Unicorns/Fairies
Data Source
SerializersValidators
Cache
Cache
Cache
Cache
Cache
Architektura über alles
Business
requirements
Architecture Implementation
Elastyczność
Router/Dispatcher Responder/Renderer
Magic/Unicorns/Fairies
Data Source
SerializersValidators
Cache
Cache
Cache
Cache
Cache
Elastyczność
Router/Dispatcher Responder/Renderer
Magic/Unicorns/Fairies
Data Source
SerializersValidators
Cache
Cache
Cache
Cache
Cache
Elastyczność
Router/Dispatcher Responder/Renderer
Magic/Unicorns/Fairies
Data Source A
SerializersValidators
Cache
Cache
Cache
Cache
Cache
Data Source B
Elastyczność
http://getprooph.org
Wnioski
Ale...
Tak, zbudowaliście framework
Tak, zbudowaliście framework
• Minimalny
• Oparty ma architekturze, którą rozumiecie
• Bo dopasowanej bo biznesu, któremu ma służyć
• Optymalny dla Waszych możliwości technicznych i poznawczych
Nigdy więcej frameworka?
Nigdy więcej frameworka?
Business
requirements
Architecture Implementation
Nigdy więcej frameworka?
Business
requirements
Architecture Implementation
tecture Implementation
Nigdy więcej frameworka?
Implementation
Framework
Microframework
Full framework
Specialiazed
framework
(i.e. Magento)
Custom Do you best
Nigdy więcej frameworka?
• Nie odkrywaj koła na nowo
• Potrzeby biznesowe są ważniejsze od mojej strefy komfortu
• Za pomocą dużego frameworka można zrobić wszystko
• Ale nie wszystko jej sens
• Samodzielne myślenie boli tylko nie przyzwyczajonych
&
Michał Łukaszewski
Intel
Software Engineer

More Related Content

Similar to Budowanie aplikacji PHP bez użycia frameworków

CISSPDAY 2011 - 2 AM A Disaster just Began
CISSPDAY 2011 - 2 AM A Disaster just BeganCISSPDAY 2011 - 2 AM A Disaster just Began
CISSPDAY 2011 - 2 AM A Disaster just BeganTobias Koprowski
 
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...PROIDEA
 
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
 
.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanie.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanieWydawnictwo Helion
 
infraxstructure: Mateusz Chrobok "Opowieść o ucieczce przed błędami typu 0da...
infraxstructure: Mateusz Chrobok  "Opowieść o ucieczce przed błędami typu 0da...infraxstructure: Mateusz Chrobok  "Opowieść o ucieczce przed błędami typu 0da...
infraxstructure: Mateusz Chrobok "Opowieść o ucieczce przed błędami typu 0da...PROIDEA
 
Pułapki programowania obiektowego
Pułapki programowania obiektowego Pułapki programowania obiektowego
Pułapki programowania obiektowego Adam Sawicki
 
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurze
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurzeinfoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurze
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurzeInfoshare
 
PLNOG 4: Paweł Andrejas - Onet Moduły
PLNOG 4: Paweł Andrejas - Onet ModułyPLNOG 4: Paweł Andrejas - Onet Moduły
PLNOG 4: Paweł Andrejas - Onet ModułyPROIDEA
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Natalia Stanko
 
Tech cafe Microservices
Tech cafe MicroservicesTech cafe Microservices
Tech cafe MicroservicesKonrad Król
 
Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?GameDesire Company
 
Dwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówDwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówMichal Lukaszewski
 
ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?Michał Dudak
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieGrzegorz Godlewski
 

Similar to Budowanie aplikacji PHP bez użycia frameworków (20)

Perl
PerlPerl
Perl
 
CISSPDAY 2011 - 2 AM A Disaster just Began
CISSPDAY 2011 - 2 AM A Disaster just BeganCISSPDAY 2011 - 2 AM A Disaster just Began
CISSPDAY 2011 - 2 AM A Disaster just Began
 
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...
 
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...
 
.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanie.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanie
 
infraxstructure: Mateusz Chrobok "Opowieść o ucieczce przed błędami typu 0da...
infraxstructure: Mateusz Chrobok  "Opowieść o ucieczce przed błędami typu 0da...infraxstructure: Mateusz Chrobok  "Opowieść o ucieczce przed błędami typu 0da...
infraxstructure: Mateusz Chrobok "Opowieść o ucieczce przed błędami typu 0da...
 
Urządzenia intersieci tworzące Internet
Urządzenia intersieci tworzące InternetUrządzenia intersieci tworzące Internet
Urządzenia intersieci tworzące Internet
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Pułapki programowania obiektowego
Pułapki programowania obiektowego Pułapki programowania obiektowego
Pułapki programowania obiektowego
 
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurze
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurzeinfoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurze
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurze
 
PLNOG 4: Paweł Andrejas - Onet Moduły
PLNOG 4: Paweł Andrejas - Onet ModułyPLNOG 4: Paweł Andrejas - Onet Moduły
PLNOG 4: Paweł Andrejas - Onet Moduły
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2
 
Tech cafe Microservices
Tech cafe MicroservicesTech cafe Microservices
Tech cafe Microservices
 
Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?
 
Oss w software house
Oss w software houseOss w software house
Oss w software house
 
Dwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówDwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędów
 
Jaki framework wybrać
Jaki framework wybraćJaki framework wybrać
Jaki framework wybrać
 
ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
 

More from Michal Lukaszewski

How we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened nextHow we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened nextMichal Lukaszewski
 
How to fix a code to not corrupt an application
How to fix a code to not corrupt an applicationHow to fix a code to not corrupt an application
How to fix a code to not corrupt an applicationMichal Lukaszewski
 
Distributed Systems @ Code Europe
Distributed Systems @ Code EuropeDistributed Systems @ Code Europe
Distributed Systems @ Code EuropeMichal Lukaszewski
 
Domain Events in Distributed Architecture
Domain Events in Distributed ArchitectureDomain Events in Distributed Architecture
Domain Events in Distributed ArchitectureMichal Lukaszewski
 
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuTechnologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuMichal Lukaszewski
 

More from Michal Lukaszewski (8)

How we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened nextHow we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened next
 
How to fix a code to not corrupt an application
How to fix a code to not corrupt an applicationHow to fix a code to not corrupt an application
How to fix a code to not corrupt an application
 
Distributed Systems @ Code Europe
Distributed Systems @ Code EuropeDistributed Systems @ Code Europe
Distributed Systems @ Code Europe
 
Domain Events in Distributed Architecture
Domain Events in Distributed ArchitectureDomain Events in Distributed Architecture
Domain Events in Distributed Architecture
 
Action Domain Response
Action Domain ResponseAction Domain Response
Action Domain Response
 
Wydajność i optymalizacja
Wydajność i optymalizacjaWydajność i optymalizacja
Wydajność i optymalizacja
 
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuTechnologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
 
Solid vs php
Solid vs phpSolid vs php
Solid vs php
 

Budowanie aplikacji PHP bez użycia frameworków