SlideShare ist ein Scribd-Unternehmen logo
1 von 70
Downloaden Sie, um offline zu lesen
1 / 70
PHP Module
PHP Module
als Rundum-Sorglos Pakete entwickeln
als Rundum-Sorglos Pakete entwickeln
2 / 70
Ralf Eggert
Chef der Travello GmbH (2005+)
PHP und Web Entwickler (1999+)
Alexa Skill Entwickler (2017+)
Alexa Champion (2018+)
3 / 70
Motivation
4 / 70
Wie entwickele ich ein
Wie entwickele ich ein
komplettes Modul*,
komplettes Modul*,
das in 20+ Websites
das in 20+ Websites
eingesetzt wird?
eingesetzt wird?
5 / 70
Eine Geschichte
6 / 70
Dies ist eine Geschichte
Dies ist eine Geschichte
voller Missverständnisse…
voller Missverständnisse…
Jede Ähnlichkeit mit real existierenden Projekten ist rein zufällig.
Jede Ähnlichkeit mit real existierenden Projekten ist rein zufällig.
7 / 70
Entwickler
Entwickler PM / PO
PM / PO
8 / 70
Kapitel 1
9 / 70
Los geht's
Hey, wir brauchen ein
Kontaktformular für
unsere Website!
10 / 70
Kein Problem
Ich baue es in unser
zentrales Application
Modul ein. Das macht den
Kohl nicht mehr fett.
11 / 70
Ergebnis
Einfaches Formular mit
wenigen Elementen.
12 / 70
Kapitel 2
13 / 70
Weiter geht's
Die andere Website
braucht auch ein
Kontaktformular, aber mit
zwei anderen Feldern!
14 / 70
Kein Problem
Ich kopiere den Code mal
eben schnell ins andere
Projekt und passe es dann
fix an.
15 / 70
Ergebnis
Jetzt haben wir alle
Formular Dateien zwar
doppelt, können sie aber
für jedes Projekt
individuell anpassen.
16 / 70
Kapitel 3
17 / 70
Und weiter
Bau noch mal zwei weitere
Kontaktformulare, die
funktionieren klasse!
18 / 70
Ok, aber...
Beim letzten Mal gab es
Probleme beim Kopieren
der einzelnen Dateien. Ich
lagere das Formular in ein
Modul aus, das lässt sich
besser kopieren.
19 / 70
Ergebnis
2x diverse Formular
Dateien in ein Modul
zusammenfassen.
Danach 2x Module
kopieren und anpassen.
20 / 70
Kapitel 4
21 / 70
Und weiter
Ein neuer Kunde braucht
auch ein Kontaktformular!
Die Anfragen müssen aber
in einer Datenbank
gespeichert werden.
Los schnell! Zeit ist Geld!
22 / 70
Ähm
Ich kopiere das Modul und
passe es für den Kunden
an. Nur welches Modul soll
ich nehmen?
23 / 70
Ergebnis
Hurra! Nun haben wir fünf
Module und alle
unterscheiden sich von
einander.
24 / 70
Kapitel 5
25 / 70
Noch weiter
Wir brauchen für unsere
eigenes Kontaktformular
nun auch das Datenbank
Dingsbums.
Los mach! Sofort!
26 / 70
Idee!
Ich lagere das Modul in ein
Git Repository aus und
baue eine Konfiguration,
um Formularelemente und
Features konfigurieren zu
können.
27 / 70
Ergebnis
Schon besser. Nun haben
wir nur noch ein Modul,
das individuell konfiguriert
und per Composer
installiert werden kann.
28 / 70
Kapitel 6
29 / 70
Kein Ende
Wir bekommen viel zu viel
Spam über die Formulare.
Bau mal Spamschutz ein!
30 / 70
Hah!
Ich passe das Modul im
Vendor Ordner an und
kopiere die Änderungen in
das Modul Repository.
Danach aktualisiere ich die
Projekte per Composer.
Was soll da schief gehen?
31 / 70
Achtung
Bitte zuhause nicht
nachmachen! Jedes Mal,
wenn du im Vendor Ordner
herum pfuscht, stirbt ein
kleines Katzenbaby.
Jedes. Verdammte. Mal.
Lass das sein!
32 / 70
Kapitel 7
33 / 70
Usw. usf.
Wir müssen die beiden
Kundenprojekte schnell
auf Bootstrap 5 umstellen!
Der Rest bleibt auf
Bootstrap 4. Das ist doch
kein Problem oder?
34 / 70
WTF!
Ok, ich gebe auf und ziehe
nach Helgoland und züchte
Erdbeeren.
35 / 70
Analyse
36 / 70
Was ist hier
Was ist hier
passiert?
passiert?
37 / 70
Clash of
Clash of
Gegensätze
Gegensätze
Nachhaltige
Nachhaltige
Entwicklung
Entwicklung
Kosten-/
Kosten-/
Zeitdruck
Zeitdruck
38 / 70
»Premature optimization
is the root of all evil.«
– Donald Knuth –
»Don't repeat yourself!«
DRY-Prinzip
– Andy Hunt & Dave Thomas –
Clash of Principles
Clash of Principles
39 / 70
Was war
Was war
schlecht?
schlecht?
40 / 70
Programming by
Copy and Paste
1
41 / 70
Dateien zu spät in
Modul kombiniert
2
42 / 70
Modul zu spät in
ein eigenes
Git Repository
ausgelagert
3
43 / 70
Konfiguration &
Feature Flags zu
spät eingeführt
4
44 / 70
Im Vendor Ordner
herum gepfuscht
5
45 / 70
Was ist bis
Was ist bis
jetzt gut?
jetzt gut?
46 / 70
Composer
1
47 / 70
Versionierung
2
48 / 70
Feature Flags
3
49 / 70
Automatisierte
Tests
4
50 / 70
DRY
5
51 / 70
Was fehlt dir
Was fehlt dir
denn noch?
denn noch?
52 / 70
Human Testing
Ablauf
Darstellung
Konfigurierbarkeit
53 / 70
Rundum-Sorglos Pakete
54 / 70
Hohe Standardisierung
Hohe Standardisierung
55 / 70
Implementation
Mit Laminas Mezzio
(Middleware Framework),
Font Awesome, MDB und
Bootstrap
Umsetzung mit anderen
Frameworks möglich
56 / 70
Modul Aufbau
57 / 70
Konfiguration
Dateien werden bei
Installation und Updates
ins Projekt übernommen
58 / 70
HTML Blöcke
Können im Projekt
individuell angepasst
werden.
59 / 70
Klassen
Kern des Moduls mit
Handlern, View Helpern,
Input Filtern,
Konfiguration, etc.
60 / 70
Templates
Templates für Handler,
View Helper und Mails
(HTML und Text)
61 / 70
Tests
Unit Tests für Handler,
View Helper, Input Filter,
Mailservice, Konfiguration,
etc.
62 / 70
Modul Application
Lauffähige Middleware
Anwendung (Mezzio) zum
Testen von Handlern,
Routen, View Helpern,
usw.
63 / 70
Assets
Zentrale Symlinks
Modul Symlinks
CDN
Einchecken
64 / 70
Composer
composer serve
"scripts": {
"serve": "php -S 0.0.0.0:8080
-t public/ -c public/php.ini"
}
65 / 70
View Helper
View Helper
testen
testen
66 / 70
Handler DE
Handler DE
67 / 70
Handler EN
Handler EN
68 / 70
Zusammenfassung
69 / 70
Rundum-sorglos PHP Module
Rundum-sorglos PHP Module
Unit Tests
konfigurierbar
wiederver-
wendbar
Feature Flags
Modul
Application
versionierbar
I18n
standardisiert
Routing
70 / 70
Fragen?
ralf@travello.de
www.travello.de

Weitere ähnliche Inhalte

Ähnlich wie PHP Module als Rundum-Sorglos-Pakete entwickeln

Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web Applications
Günther Haslbeck
 
Mockups prototyping
Mockups prototypingMockups prototyping
Mockups prototyping
Hausammann
 

Ähnlich wie PHP Module als Rundum-Sorglos-Pakete entwickeln (20)

OSDC 2011 | Puppet from Scratch by Thomas Gelf
OSDC 2011 | Puppet from Scratch by Thomas GelfOSDC 2011 | Puppet from Scratch by Thomas Gelf
OSDC 2011 | Puppet from Scratch by Thomas Gelf
 
130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata
 
Zend Framework 2.0
Zend Framework 2.0Zend Framework 2.0
Zend Framework 2.0
 
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
 
WYSIWYG-Editoren (für Drupal 7)
WYSIWYG-Editoren (für Drupal 7)WYSIWYG-Editoren (für Drupal 7)
WYSIWYG-Editoren (für Drupal 7)
 
Legacy php - Sanieren oder Ablösen?
Legacy php  - Sanieren oder Ablösen?Legacy php  - Sanieren oder Ablösen?
Legacy php - Sanieren oder Ablösen?
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013
 
Web Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 BetaWeb Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 Beta
 
WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!
WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!
WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!
 
#wpdm - Plugin-Entwicklung für den TinyMCE
#wpdm - Plugin-Entwicklung für den TinyMCE#wpdm - Plugin-Entwicklung für den TinyMCE
#wpdm - Plugin-Entwicklung für den TinyMCE
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha Night
 
Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web Applications
 
DevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenDevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigen
 
WordPress vs. TYPO3
WordPress vs. TYPO3WordPress vs. TYPO3
WordPress vs. TYPO3
 
Mockups prototyping
Mockups prototypingMockups prototyping
Mockups prototyping
 
Vom Zend Framework zu Laminas
Vom Zend Framework zu LaminasVom Zend Framework zu Laminas
Vom Zend Framework zu Laminas
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
 
DWX 2017 - GIT im Leben eines VS Entwicklers
DWX 2017 - GIT im Leben eines VS EntwicklersDWX 2017 - GIT im Leben eines VS Entwicklers
DWX 2017 - GIT im Leben eines VS Entwicklers
 
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien
 

Mehr von Ralf Eggert

Mehr von Ralf Eggert (20)

ChatGPT: unser täglich' Bot gib uns heute
ChatGPT: unser täglich' Bot gib uns heuteChatGPT: unser täglich' Bot gib uns heute
ChatGPT: unser täglich' Bot gib uns heute
 
Der ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 EditionDer ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 Edition
 
Alexa, what's next?
Alexa, what's next?Alexa, what's next?
Alexa, what's next?
 
Alexa, wohin geht die Reise
Alexa, wohin geht die ReiseAlexa, wohin geht die Reise
Alexa, wohin geht die Reise
 
8. Hamburg Voice Interface Meetup
8. Hamburg Voice Interface Meetup8. Hamburg Voice Interface Meetup
8. Hamburg Voice Interface Meetup
 
Welcome Bixby
Welcome BixbyWelcome Bixby
Welcome Bixby
 
Alexa Skill Maintenance
Alexa Skill MaintenanceAlexa Skill Maintenance
Alexa Skill Maintenance
 
Vom Zend Framework zu Laminas
Vom Zend Framework zu LaminasVom Zend Framework zu Laminas
Vom Zend Framework zu Laminas
 
Alexa Skills und PHP? Passt das zusammen?
Alexa Skills und PHP? Passt das zusammen?Alexa Skills und PHP? Passt das zusammen?
Alexa Skills und PHP? Passt das zusammen?
 
Mit Jovo von 0 auf 100
Mit Jovo von 0 auf 100Mit Jovo von 0 auf 100
Mit Jovo von 0 auf 100
 
Alexa for Hospitality
Alexa for HospitalityAlexa for Hospitality
Alexa for Hospitality
 
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...
 
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenFortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
 
Die sieben Projektphasen für Voice Projekte
Die sieben Projektphasen für Voice ProjekteDie sieben Projektphasen für Voice Projekte
Die sieben Projektphasen für Voice Projekte
 
Künstliche Intelligenz – Traum und Wirklichkeit
Künstliche Intelligenz – Traum und WirklichkeitKünstliche Intelligenz – Traum und Wirklichkeit
Künstliche Intelligenz – Traum und Wirklichkeit
 
Multi-Modal Voice Development with Amazon Alexa
Multi-Modal Voice Development with Amazon AlexaMulti-Modal Voice Development with Amazon Alexa
Multi-Modal Voice Development with Amazon Alexa
 
Mein Haus, mein Auto, mein Backend
Mein Haus, mein Auto, mein BackendMein Haus, mein Auto, mein Backend
Mein Haus, mein Auto, mein Backend
 
Zend/Expressive 3 – The Next Generation
Zend/Expressive 3 – The Next GenerationZend/Expressive 3 – The Next Generation
Zend/Expressive 3 – The Next Generation
 
Sieben Tipps für den Voice Commerce mit PHP
Sieben Tipps für den Voice Commerce mit PHPSieben Tipps für den Voice Commerce mit PHP
Sieben Tipps für den Voice Commerce mit PHP
 
Multi Modal Voice Development with Amazon Alexa
Multi Modal Voice Development with Amazon AlexaMulti Modal Voice Development with Amazon Alexa
Multi Modal Voice Development with Amazon Alexa
 

PHP Module als Rundum-Sorglos-Pakete entwickeln