Leanpub Header

Skip to main content

TYPO3 Extbase, 3. Auflage (Deutsch)

Moderne Extension-Entwicklung mit Extbase und Fluid

Erfahren Sie, wie Sie mit Extbase und Fluid moderne TYPO3 Extensions entwickeln können!

Die vollständig überarbeitete dritte Ausgabe des Buches basiert auf TYPO3 v9 LTS und berücksichtigt alle modernen Praktiken und neuen Aspekte dieser stabilen LTS-Version.

https://www.extbase-book.org

(Deutsche Übersetzung: Vanessa Nickel)

Minimum price

$19.99

$24.99

You pay

$24.99

Author earns

$19.99
$

...Or Buy With Credits!

You can get credits monthly with a Reader Membership
PDF
EPUB
WEB
138
Readers
441
Pages
About

About

About the Book

Extensions („Erweiterungen“) spielen eine zentrale Rolle bei der Entwicklung komplexer TYPO3 CMS Installationen. Entsprechend ist versiertes Know-how in der Programmierung dieser Erweiterungen eine Kernkompetenz von TYPO3 Entwicklern. Als Standard für die Umsetzung gelten heute das Extbase Framework und die Fluid Templating Engine.

Dieses Fachbuch gibt Einsteigern sowie Fortgeschrittenen solides Wissen an die Hand, um Projekte jeder Größe mit Extbase und Fluid zu planen, umzusetzen und langfristig effizient zu warten. Von den Grundlagen der objektorientierten Programmierung in PHP über die Prinzipien des Domain-driven Design (DDD) bis hin zum Model View Controller (MVC) Konzept werden sowohl theoretische Aspekte als auch praktische Lösungen erläutert. Nach einer leicht verständlichen Einführung in die Grundlagen, folgt eine Schritt-für-Schritt-Anleitung zur Entwicklung realer, komplexer Szenarien unter Verwendung von bewährten Methoden. Ein Kapitel ist dem Thema Sicherheitsstandards in TYPO3 Extensions gewidmet. Erfahren Sie mehr darüber, wie Sie wirksame Maßnahmen etablieren und typische Schwachstellen beim Erstellen von Erweiterungen vermeiden können.

Das Buch verschafft TYPO3 Entwicklern den Zugang zur anspruchsvollen Thematik und zeigt, wie sauberer Code nach modernen Standards und unter Beachtung moderner Programmierprinzipien für TYPO3 v9 LTS geschrieben wird.

Author

About the Author

Michael Schams

Michael Schams is a well-known, long-term member of the TYPO3 community with many years of professional experience. He holds a master's degree in computer sciences, is an international advocate of open-source software, and a regular writer for technical journals and online media.

Currently based in Melbourne (Australia), Michael consults with clients across the globe to achieve best outcomes in the digital space. He is a member of the TYPO3 Education Committee and an AWS certified Cloud Practitioner and an AWS certified Solutions Architect.

? https://schams.net

Contents

Table of Contents

Vorwort

  1. Lesezeichen setzen!
  2. Patricks Hintergrund
  3. Michaels Hintergrund
  4. Danksagung
  5. Piraterie

Hinweise zur deutschen Ausgabe

1.Die Entstehungsgeschichte von Extbase und Fluid

  1. 1.1Der Ursprung von TYPO3
  2. 1.2Das Berlin Manifesto
  3. 1.3Das neue PHP-Framework
  4. 1.4Der Tod des Phoenix
  5. 1.5Die Trennung
  6. 1.6Extbase und Fluid

2.Grundlagen der PHP Programmierung

  1. 2.1Objektorientierte Programmierung
  2. OOP in Extbase und Fluid
  3. 2.2Klassen und Objekte
  4. Syntax
  5. 2.3Methoden
  6. 2.3.1Der Pfeil-Operator (“Arrow Operator”)
  7. 2.3.2Der Konstruktor (“Constructor”)
  8. 2.3.3Zugriff mittels $this
  9. 2.3.4Funktionen mit Inhalten füllen
  10. 2.4Vererbung von Klassen
  11. 2.4.1Zugriff mittels parent
  12. 2.4.2Überprüfung der Klassenzugehörigkeit
  13. 2.5Abstrakte Klasse
  14. 2.6Interfaces
  15. 2.7Sichtbarkeit: public und protected
  16. Sichtbarkeiten in Extbase und Fluid
  17. 2.7.1Getter und Setter
  18. 2.8Type Hints
  19. 2.9Datentyp-Deklaration für Rückgabewerte
  20. 2.10Strenge Typisierung (“Strict Types”)
  21. 2.11Statische Zugriffe
  22. 2.12Namespaces
  23. 2.13Wichtige Entwurfs- und Architekturmuster
  24. 2.13.1Singleton
  25. 2.13.2Prototype
  26. 2.13.3Dependency Injection
  27. 2.14Annotations
  28. 2.15Programmierstandards
  29. PSR and PHP FIG
  30. 2.15.1PSR-1
  31. 2.15.2PSR-2
  32. 2.15.3Code-Kommentare

3.Domain-Driven Design

  1. 3.1Infrastructure Ignorance
  2. 3.2Vertikale Schichtarchitektur
  3. 3.3Das Domänenmodell
  4. 3.3.1Ubiquitous Language
  5. Pragmatisches Vorgehen
  6. 3.3.2Bausteine für das DDD
  7. 3.4Strukturierung von DDD
  8. 3.4.1Bounded Context
  9. 3.4.2Context Map
  10. 3.4.3Core Domain
  11. 3.4.4Shared Kernel
  12. 3.4.5Zusammenfassung

4.Vorbereitung

  1. TYPO3 vorinstalliert
  2. 4.1Installation von TYPO3
  3. TYPO3 v10 und höher
  4. 4.1.1Systemanforderungen
  5. 4.1.2Installation mit PHP Composer
  6. 4.1.3Site Package
  7. 4.1.4Development Application Context
  8. 4.2Grundlagen von TYPO3-Extensions
  9. 4.2.1Extension Keys
  10. 4.2.2TYPO3 Extension Repository (TER)
  11. 4.2.3TER Extensions und Composer
  12. 4.2.4Weitere Methoden zur Veröffentlichung
  13. 4.2.5Extensions, Plugins, Modules und Distributions
  14. 4.2.6Hinter den Kulissen
  15. 4.2.7Datei- und Verzeichnisstruktur
  16. 4.3Entwicklungsumgebung
  17. 4.4Zusammenfassung

5.Erstellen eines Domänenmodells

  1. 5.1In diesem Buch verwendetes Domänenmodell
  2. 5.2Grundkonzept
  3. 5.2.1Das Glossar
  4. 5.2.2Domain Model (“Domänenmodell”)
  5. 5.3Der TYPO3 Extension Builder
  6. 5.3.1Historie
  7. 5.3.2So funktioniert der Extension Builder
  8. 5.3.3Zielgruppe
  9. 5.3.4Einschränkungen
  10. 5.3.5Installation
  11. Extension Builder Version
  12. 5.3.6Extension Eigenschaften (Properties)
  13. Folge genau den Anweisungen und Beispielen
  14. Speichere jetzt deine Änderungen!
  15. 5.3.7Domain Model
  16. Die Reihenfolge der Erstellung der Objekte ist relevant
  17. 5.3.8Die Eigenschaften des Domänenmodells
  18. Speichere jetzt deine Änderungen!
  19. 5.3.9Relationen im Domänenmodell
  20. Speichere jetzt deine Änderungen!
  21. 5.4Aktivierung der Extension
  22. 5.5Automatisches Laden von PHP-Klassen (“Autoloading”)
  23. 5.6Zusammenfassung

6.Analyse der initialen Dateien

  1. 6.1Vom Extension Builder erstellte Dateien
  2. 6.1.1Dateien im Ordner Classes/
  3. Einheitliche Namensgebung
  4. 6.1.2Dateien in dem Ordner Configuration/
  5. 6.1.3Dateien im Ordner Resources/
  6. 6.1.4Dateien im Ordner Tests/
  7. 6.1.5Dateien im Stammverzeichnis
  8. 6.1.6Datei ext_tables.php
  9. 6.2Zusätzliche Funktionalität des Extension Builders
  10. 6.2.1Modifizieren des Models
  11. 6.3TypoScript constants und setup
  12. 6.4Zusammenfassung

7.Der CRUD-Prozess

  1. 7.1Model-View-Controller in Extbase
  2. 7.2Erstellen eines Objekts (“Create”)
  3. 7.2.1Erstellen einer “Action” im Controller
  4. 7.2.2Erstellen des Templates für die listAction()
  5. 7.2.3Anmerkung: Template-Rendering
  6. Rendern von einem View ohne Ausgabe
  7. 7.2.4Statische Blogs erstellen
  8. 7.2.5Blogs persistieren (speichern)
  9. 7.2.6Wie Persistenz funktioniert
  10. 7.2.7Die manuelle Speicherung durch den PersistenceManager
  11. 7.2.8Eigene Action erstellen
  12. 7.2.9Formular zum Anlegen eines Objekts
  13. Was dich als nächstes erwartet
  14. 7.3Lesen eines Objekts (“Read”)
  15. 7.4Aktualisierung eines Objekts (“Update”)
  16. 7.5Löschen eines Objekts (“Delete”)
  17. 7.5.1Übung
  18. Action-Name deleteConfirm
  19. 7.6Anpassung des visuellen Erscheinungsbildes
  20. 7.6.1“Font Awesome” Icons
  21. 7.6.2List View: Button rechts ausrichten
  22. 7.6.3Button-Abstände
  23. 7.7Zusammenfassung

8.Fluid Templating

  1. 8.1Templates, Layouts und Partials
  2. 8.2Ein globales Layout verwenden
  3. 8.2.1Mehrfach-Abschnitte (“Sections”)
  4. 8.2.2Optionale Abschnitte
  5. 8.3Partials
  6. 8.3.1Einfache Partials
  7. Verwendung von Unterverzeichnissen
  8. 8.3.2Komplexe Partials
  9. Übergabe von Argumenten an Partials
  10. 8.4Zusammenfasung

9.Query Manager und Repositories

  1. 9.1Repository-Klasse
  2. 9.2Magische Funktionen
  3. 9.3Standard-Struktur einer Abfrage
  4. 9.3.1Anmerkung: Debugging
  5. Nicht für die Öffentlichkeit!
  6. 9.4Abfragen anpassen
  7. 9.4.1Ergebnismenge konkretisieren
  8. 9.4.2Ergebnismenge beeinflussen
  9. 9.4.3Logische Verknüpfung
  10. 9.4.4Natives SQL
  11. 9.4.5Abfrageeinstellungen (Query Settings)
  12. 9.5Beispiel: Suche nach einem Schlüsselwort im Titel
  13. 9.6Dynamische Suche im Repository
  14. Sonderzeichen konvertieren
  15. 9.7Anmerkung: Das Request-Objekt
  16. 9.8Zusammenfassung

10.TypoScript und FlexForm Konfiguration

  1. 10.1TypoScript
  2. 10.1.1Hauptschlüssel
  3. 10.1.2Unterschlüssel
  4. 10.1.3Option: view
  5. 10.1.4Option: persistence
  6. 10.1.5Option: objects
  7. 10.1.6Option: features
  8. 10.1.7Option: mvc
  9. 10.1.8Option: settings
  10. 10.1.9Option: _LOCAL_LANG
  11. 10.1.10Option: _CSS_DEFAULT_STYLE
  12. 10.2FlexForms
  13. 10.2.1FlexForm Konfiguration
  14. Klicke immer auf “save”
  15. 10.2.2Zugriff auf die FlexForm-Konfiguration
  16. 10.2.3Zugreifen auf Konfigurationen außerhalb eines Controllers
  17. 10.2.4Switchable Controller Actions (SCA)
  18. Entferne die SCA-Konfiguration, bevor du fortfährst.
  19. 10.3TypoScript für Backend-Module
  20. 10.4Anpassungen für die nächsten Kapitel
  21. 10.5Zusammenfassung

11.Validierung und Fehlerbehandlung

  1. 11.1Der Punkt, an dem die Validierung stattfindet
  2. 11.2Fehler anzeigen
  3. 11.2.1ViewHelper: Validierungsergebnisse
  4. 11.3Übersicht der Validierungsmöglichkeiten
  5. 11.4Property-Validierung
  6. 11.4.1Eingebaute Validatoren
  7. 11.4.2Mehrere Validatoren
  8. 11.4.3Eigene Validatoren
  9. 11.5Objekt-Validierung (Object Validation)
  10. 11.6Action-Validierung (Action Validation)
  11. 11.7Validierungen explizit unterbinden
  12. 11.8Flash-Messages
  13. 11.8.1Flash-Messages generieren
  14. 11.8.2Flash-Messages anzeigen
  15. 11.8.3Flash-Message-Warteschlangen
  16. 11.8.4Flash-Message-Warteschlangen in einem Controller
  17. 11.8.5Praktische Übung
  18. 11.9Zusammenfassung

12.ViewHelper

  1. 12.1ViewHelper im Allgemeinen
  2. 12.1.1Namespace
  3. 12.1.2PHP-Klassendateien
  4. 12.2ViewHelper im TYPO3 Core
  5. 12.3ViewHelper von der Community
  6. 12.4Eigene ViewHelper
  7. 12.4.1Text-ViewHelper
  8. 12.4.2TagBased-ViewHelper
  9. Universelle Tag-Attribute
  10. 12.4.3Condition-ViewHelper
  11. 12.4.4Widget-ViewHelper
  12. Mach deine ViewHelper idiotensicher!
  13. Performance
  14. 12.5Überprüfe dein Wissen
  15. 12.5.1Übung: Der Gravatar ViewHelper
  16. 12.5.2Übung: Das A-bis-Z Widget
  17. 12.6Die Methoden renderStatic() und render()
  18. 12.7Zusammenfassung

13.Relationen

  1. 13.1Relationen im Domänenmodell
  2. 13.2Das “Table Configuration Array” (TCA)
  3. 13.2.1TCA: ctrl
  4. 13.2.2TCA: interface
  5. 13.2.3TCA: types
  6. 13.2.4TCA: palettes
  7. 13.2.5TCA: columns
  8. Validierung synchron halten
  9. 13.3Der CRUD Prozess von Blog-Beiträgen (“Posts”)
  10. 13.3.1Vorbereitung
  11. 13.3.2Beiträge erstellen (“create”)
  12. 13.3.3Beiträge lesen (“read”)
  13. 13.3.4Beiträge aktualisieren (“update”)
  14. 13.3.5Beiträge löschen (“delete”)
  15. 13.4m:n-Relationen (Tags)
  16. 13.4.1Erstellen von Tags im Backend
  17. 13.4.2Tags-Repository
  18. 13.4.3Tags im Post-Controller auslesen
  19. 13.4.4Anpassungen von Templates und Partials
  20. Tags werden automatisch gespeichert
  21. 13.4.5Tags in der Liste der Beiträge anzeigen
  22. 13.51:1-Relationen (Autoren)
  23. 13.5.1Frontend-Benutzer und -Gruppen
  24. 13.5.2Author zu fe_users zuordnen
  25. 13.5.3Implementierung des Frontend-Teils
  26. 13.5.4Automatische Zuweisung des Frontend-Benutzers
  27. 13.5.5E-Mail-Adressen verschleiern
  28. 13.6Kommentare als AJAX-Anfrage
  29. Aus didaktischen Gründen
  30. 13.6.1Controller und Action
  31. 13.6.2Ajax-Controller
  32. 13.6.3Kommentare anzeigen
  33. 13.6.4JavaScript
  34. Fehlerbehandlung
  35. 13.6.5Der AJAX-Seitentyp in TypoScript
  36. 13.7Zusammenfassung

14.Labels und Lokalisierung

  1. 14.1Wozu werden Sprachdateien verwendet?
  2. 14.2Sprachdateien
  3. 14.2.1Platzhalter
  4. 14.2.2Variablen
  5. 14.2.3Aktualisierung alle Template-Dateien
  6. 14.3Labels mittels TypoScript überschreiben
  7. 14.4Sprache-Konfiguration
  8. 14.4.1Sprache der Website
  9. 14.4.2Website-Konfiguration
  10. Veraltete TypoScript-Einstellungen
  11. 14.4.3Übersetzungen von Seiten
  12. 14.4.4Übersetzung von Inhaltselementen
  13. Webserver-Konfiguration
  14. 14.5Lokalisierte Sprachdatei
  15. 14.5.1Labels mittels TypoScript überschreiben
  16. 14.6Sprach-Labels in PHP
  17. 14.7Lokalisierung von Domänenobjekten
  18. Kein perfektes Beispiel
  19. 14.7.1Das “Table Configuration Array” (TCA)
  20. 14.7.2Dateneinträge übersetzen
  21. 14.8Zusammenfassung

15.Property Mapper und Type Converter

  1. 15.1Der Property Mapper
  2. 15.1.1Type Converter
  3. 15.1.2Property Mapper Konfiguration
  4. 15.2Datei-Upload-Funktionalität
  5. 15.2.1Sicherheitsaspekte
  6. 15.2.2Blog Controller
  7. 15.2.3Upload FileReference Converter
  8. 15.2.4Blog-Domänenmodell
  9. 15.2.5TCA des Blog-Domänenmodells
  10. 15.2.6FileReference Domänenmodell
  11. 15.2.7TypoScript
  12. 15.2.8Partials und Templates
  13. 15.2.9FormUpload-ViewHelper
  14. 15.3Testen der Datei-Upload-Funktion
  15. 15.4Zusammenfassung

16.Backend-Module

  1. 16.1Anforderungsanalyse und Lösungskonzeption
  2. 16.2Basiskomponenten
  3. 16.2.1Registration
  4. 16.2.2Sprachdatei
  5. 16.2.3Abstract Backend Controller
  6. 16.3Die erste Funktion: Liste der Kommentare
  7. 16.3.1Der Comment-Controller
  8. 16.3.2Fluid-Templates
  9. 16.4Die zweite Funktion: das Dashboard
  10. 16.4.1Modul-Registrierung
  11. 16.4.2Erweiterung des Menüs
  12. 16.4.3Der Dashboard-Controller
  13. 16.4.4Fluid-Templates
  14. 16.4.5Darstellung der Statistiken
  15. 16.4.6RequireJS
  16. 16.4.7AJAX im TYPO3 Backend
  17. 16.4.8AJAX-Funktionalität zu JavaScript hinzufügen
  18. 16.4.9Feinabstimmung und zusätzliche Hinweise
  19. 16.5Die Styleguide Extension
  20. 16.5.1Installation
  21. 16.5.2Anwendung
  22. 16.6Zusammenfassung

17.Aufräumen und Projektabschluss

  1. 17.1Annotations
  2. 17.2Der PSR-2 Coding Standard (“PHP CodeSniffer”)
  3. 17.3DocBlocks (“phpDocumentor”)
  4. 17.4Dokumentation
  5. 17.5Zusammenfassung

18.Sicherheitsgrundlagen

  1. 18.1Das TYPO3 Security Team
  2. 18.2Sicherheit in TYPO3 Extensions
  3. 18.3Die häufigste Sicherheitslücken
  4. 18.3.1OWASP Top 10
  5. 18.3.2Einschleusen von Schadcode
  6. 18.3.3Cross-Site Scripting
  7. 18.3.4Cross-Site Request Forgery
  8. 18.3.5Fehlende Zugriffskontrolle
  9. 18.4Weitere typische Sicherheitsrisiken

19.Was kommt als nächstes?

  1. 19.1Offizielle TYPO3-Zertifizierungen

Anhang

  1. TYPO3 Versionshistorie
  2. Extension-Konfigurationsdatei
  3. Referenzen und weiterführende Literatur
  4. Inoffizielle Websites
  5. PHP Sicherheit
  6. Glossar
  7. Änderungshistorie

The Leanpub 60 Day 100% Happiness Guarantee

Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.

You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!

So, there's no reason not to click the Add to Cart button, is there?

See full terms...

Earn $8 on a $10 Purchase, and $16 on a $20 Purchase

We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.

(Yes, some authors have already earned much more than that on Leanpub.)

In fact, authors have earned over $14 million writing, publishing and selling on Leanpub.

Learn more about writing on Leanpub

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Write and Publish on Leanpub

You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!

Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.

Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.

Learn more about writing on Leanpub