TYPO3 CMS Certified Developer (Deutsch)

Zurückgezogen

Dieses Buch ist nicht mehr zum Verkauf verfügbar.

TYPO3 CMS Certified Developer (Deutsch)

Vorbereitung auf die Prüfung der TYPO3 Association (1. Auflage)

Über das Buch

„TYPO3 CMS Certified Developer“ ist eine neue, von der TYPO3 Association im Jahr 2016 entwickelte Zertifizierung für all jene, die ihre TYPO3-Kenntnisse im Bereich der TYPO3 Extension-Programmierung testen und dokumentieren möchten. Die anspruchsvolle Prüfung umfasst Themen wie Architecture, TYPO3 Internals (FlexForms, TCA, I18n, ...), Fluid, Security, Errors and Validations, Caching, Repositories and Query Manager, Exception handling and Debugging, Documentation, Miscellaneous und vieles mehr.

Freiberuflern wie Agenturen dient das Zertifikat als Qualifikationsnachweis bei größeren Kundenprojekten. Gleichzeitig erhalten Unternehmen ein objektives Kriterium für die Auswahl ihrer Dienstleister.

Die Prüfung - ebenso wie das Buch - deckt die Version TYPO3 CMS 7 LTS ab -  damit sind Sie auf dem aktuellen Stand und können sich im Selbststudium oder im Rahmen von Schulungen optimal vorbereiten.

Orientiert am Fragenstil der Originalprüfung, behandelt der bekannte TYPO3-Spezialist Patrick Lobacher alle relevanten Themenbereiche im Detail. Übungsfragen, Lösungen und fundierte Erläuterungen vermitteln einen authentischen Eindruck der erwarteten Kenntnisse und vervollständigen Ihr Wissen.

  • Dieses Buch teilen

  • Kategorien

    • PHP
    • Software Engineering
    • Software Architecture
  • Feedback

Über den Autor

Michael Schams
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 also a member of the TYPO3 Education Committee and an AWS certified Cloud Practitioner and an AWS certified Solutions Architect.

Inhaltsverzeichnis

  • 1. Vorbemerkung
    • 1.1 Danksagung
    • 1.2 Changelog
  • 2. Einführung
    • 2.1 Bewertung der Qualität von TYPO3-Dienstleistungen
    • 2.2 TYPO3 CMS Certified Developer
    • 2.3 Die Zertifizierung
    • 2.4 Zur Benutzung dieses Buches
  • 3. Architecture
    • 3.1 Welche Aussagen über Plugins und Module sind korrekt? (2)
    • 3.2 Welche Aussagen über Extbase-Controller sind korrekt? (2)
    • 3.3 Du willst eine List-Action mit einem View verbinden - was musst Du hierfür tun? (2)
    • 3.4 Welche Charakteristika haben Controller? (2)
    • 3.5 Wie kann man im Domain-Model auf TypoScript-Einstellungen zugreifen? (1)
    • 3.6 Welche Aussage über Domain-Models ist richtig? (1)
    • 3.7 Welche der folgenden Konstrukte sind wirksam? (2)
    • 3.8 Welche Annotation wird benötigt, um eine Relation vom Typ 1:n zu speichern? (1)
    • 3.9 Welche Relationen sind mit IRRE nicht möglich? (1)
    • 3.10 Welche Methode wird offiziell empfohlen, um im Controller ein Objekt zu erhalten? (1)
    • 3.11 Was wird benötigt, um einen Scheduler-Task zu erstellen? (3)
    • 3.12 Wie wird die Steuereinheit im Extbase MVC bezeichnet? (1)
    • 3.13 Welche Vendor-Namen sind innerhalb von Extbase erlaubt? (2)
    • 3.14 Welche Funktion hat die Datei ext_localconf.php? (2)
    • 3.15 Wie erhält man ein Singleton in einem Controller? (1)
    • 3.16 Was sind “Signals”? (1)
    • 3.17 Welche Verzeichnisse gibt es per Konvention? (2)
    • 3.18 Wo kann ich nicht per Default mittels $this->objectManager auf den ObjectManager zugreifen ? (3)
    • 3.19 Wie wird ein Slot an ein Signal gebunden? (1)
    • 3.20 Wie kann man die Tabelle fe_users in einer eigenen Extension ansprechen? (2)
    • 3.21 Welche Signale sind in Extbase per Default vorhanden? (3)
    • 3.22 Was wird benötigt, um die globale Category-API in eigenen Extensions verwenden zu können? (2)
    • 3.23 Wie wird der sogenannte JSON-View verwendet? (1)
    • 3.24 Wie ist es möglich ein nicht-persistentes Objekt aus einem GET-Request heraus zu erstellen? (1)
    • 3.25 In welcher Datei werden eigene TypeConverter registriert? (1)
    • 3.26 Was wird benötigt, um die Seiteneigenschaften um ein eigenes Feld zu erweitern? (2)
    • 3.27 Welche Aussagen über den View innerhalb des Controllers sind korrekt? (2)
    • 3.28 Was ist der Unterschied zwischen den Controller-Methoden $this->forward() und $this->redirect()? (2)
    • 3.29 Wie wird ein HTTP-Status-Code 400 ausgegeben? (1)
    • 3.30 Was wird benötigt, um einen neuen TYPO3 CLI-Befehl zu etablieren? (2)
    • 3.31 Wie kann der Application Context geändert werden? (1)
    • 3.32 Wie kann man ein Live-System und ein Staging-System unterscheiden, die beide den Application-Context Production haben? (1)
    • 3.33 Wie kann ein Argument im MVC gesetzt werden? (1)
    • 3.34 Wenn man in Fluid {object.property} verwendet, wie darf die Domain-Model-Methode zum Ermitteln des Wertes heißen? (3)
  • 4. TYPO3-Internal (FlexForms, TCA, I18n, …)
    • 4.1 Welche Regeln gelten für den Extension-Key? (1)
    • 4.2 Was ist beim mehrmaligen Einsatz eines Plugins auf einer Seite zu beachten? (1)
    • 4.3 Wie kann ein Feld im Backend vor einem Editor versteckt werden? (2)
    • 4.4 Was sind “Switchable Controller Actions”? (1)
    • 4.5 Welche Schritte sind notwendig, um eine FlexForm für ein Plugin zu laden? (3)
    • 4.6 Welche Unterschlüssel des Arrays $EM_CONF[...] in der Datei ext_emconf.php müssen unbedingt angegeben werden? (1)
    • 4.7 Welche Formatierungen müssen gemäß “PSR Coding Guidelines” eingehalten werden? (2)
    • 4.8 Welche Formatierungen müssen gemäß TYPO3 CMS Coding Guidelines eingehalten werden? (4)
    • 4.9 Welchen Status gibt es in der Datei ext_emconf.php für den Unterschlüssel state? (2)
    • 4.10 Welche Aussagen hinsichtlich von XLIFF-Dateien sind korrekt? (2)
    • 4.11 Wie kann das Repository dazu gebracht werden, gelöschte Datensätze nicht zurückzugeben? (1)
    • 4.12 Welche Aussagen über Versionierung sind korrekt ? (2)
    • 4.13 Welcher Wert muss in der Datenbank gesetzt sein, damit ein Datensatz in allen Sprachen zur Verfügung steht? (1)
    • 4.14 Was passiert bei der TypoScript-Einstellung config.sys_language_mode = strict? (1)
    • 4.15 Wie kann man im Controller auf FlexForm-Werte zugreifen? (1)
    • 4.16 Was ist die Charakteristik der Methoden redirect() und forward() im Controller? (2)
    • 4.17 In welcher Datei wird die Inklusion der FlexForm durchgeführt? (1)
    • 4.18 Wie kann in einer FlexForm ein übersetztes Label realisiert werden? (1)
    • 4.19 Welche Priorität haben Sprachdateien in Extbase standardmäßig? (1)
    • 4.20 Was wird benötigt, um ein statisches TypoScript zur Verfügung zu stellen? (2)
    • 4.21 Nehmen wir an, die Extension heißt simpleblog und das Domain-Model Blog. In welcher Datei wird das zugehörige TCA gespeichert? (1)
    • 4.22 Was passiert, wenn man in einer eigenen Extension das TCA der Tabelle pages in der Datei ext_tables.php um ein Feld erweitert? (1)
    • 4.23 Im Backend werden im Model “List” Datensätze angezeigt. Wie erreicht man im TCA, dass in der Tabelle tx_simpleblog_domain_model_blog der Inhalt der Spalte shortdescr auf der linken Seite angezeigt wird? (1)
    • 4.24 Wie kann eine Backend-Route hinzugefügt werden? (1)
  • 5. Fluid
    • 5.1 Welche Ausgabe hat folgendes Fluid-Template? (1)
    • 5.2 Welche Ausgabe hat folgendes Fluid-Template? (1)
    • 5.3 Welche Ausgabe hat folgendes Fluid-Template? (1)
    • 5.4 Wie kann man die Variable var (die im Controller an den View übergeben wurde) an ein Partial übergeben? (2)
    • 5.5 Welche Inline-Syntax ist korrekt? (1)
    • 5.6 Wie kann man in Fluid kommentieren, sodass der auskommentierte Inhalt nicht im Quelltext der Seite sichtbar ist? (2)
    • 5.7 Was muss in einer FlexForm stehen, damit das Fluid-Snippet {settings.headline} darauf zugreifen kann? (1)
    • 5.8 Welche Aussagen über Widgets sind richtig? (2)
    • 5.9 Für welche Ausgabe sorgt property im ViewHelper<f:form.textfield property="title" />, wenn das object Attribut des Form-ViewHelper blog lautet, die Extension Simpleblog und das Plugin Bloglisting ist? (1)
    • 5.10 Welche Argumente hat der ViewHelper <f:flashMessage>? (1)
    • 5.11 Wie lautet die korrekte Syntax für eine Namespace-Angabe im Fluid? (1)
    • 5.12 Wie kann der Inhalt der Variablen blog in ein Partial transportiert werden? (2)
    • 5.13 Wie kann in Fluid erreicht werden, dass ein großes Bild auf 100px Breite runterskaliert wird? (1)
    • 5.14 Wie lässt sich der <f:form.textfield> ViewHelper ergänzen, damit im HTML ein Attribut data-user="patrick" ausgegeben wird? (1)
    • 5.15 Wie kann man einen String-Vergleich im If-ViewHelper durchführen? (2)
    • 5.16 Wie ist es möglich, bei einer installierten Fremd-Extension lediglich eines der Templates individuell anzupassen, ohne die restlichen Templates kopieren zu müssen? (1)
    • 5.17 Welche abstrakten ViewHelper gibt es per Default in Fluid? (2)
    • 5.18 Welche Aussagen über Widgets sind wahr? (3)
    • 5.19 Wie ist es möglich, ein eigenes Template für ein mitgeliefertes Widget zu verwenden? (1)
    • 5.20 Was muss getan werden, damit der Link-ViewHelper beliebige GET-Parameter, die in der URL vorhanden sind, an den Link anhängt? (1)
    • 5.21 Welche Bedeutung hat das Attribut optional in folgendem Code? (1)
    • 5.22 Wie verhindert man das Rendern des HTML-Tags in folgendem Partial? (1)
    • 5.23 Wie kann man mehrere Variablen an den View übergeben? (3)
    • 5.24 Welche Input-Werte kann der Paginate-ViewHelper verarbeiten? (3)
    • 5.25 Was fehlt im folgenden Script an der Stelle der 5 Fragezeichen, damit das Template in jeder PHP Datei gerendert werden kann? (1)
  • 6. TypoScript
    • 6.1 Angenommen, der Extension-Key lautet simpleblog und der Plugin-Key Bloglisting - welche TypoScript-Schlüssel gibt es? (3)
    • 6.2 Wie kann man im Controller auf den value aus folgendem TypoScript-Setting zugreifen: plugin.tx_simpleblog.settings.key = value? (1)
    • 6.3 Wie kann man im TypoScript erreichen, dass ein Plugin (Extension: Simpleblog, Plugin: Bloglisting) auf jeder Seite eingebunden wird? (1)
    • 6.4 Welche Möglichkeit gibt es, eine Extension mit TSconfig-Settings auszustatten? (1)
    • 6.5 Was bewirkt der TypoScript-Unterschlüssel features.skipDefaultArguments = 1? (1)
    • 6.6 Wie kann erreicht werden, dass beim Aufruf einer nicht konfigurierten Action automatisch zur Default-Action gesprungen wird? (1)
    • 6.7 Wie kann erreicht werden, dass beim Aufruf einer nicht konfigurierten Action eine “Page not found” Meldung (HTTP Code 404) ausgegeben wird? (1)
    • 6.8 Was kann getan werden, damit eine Action nicht aufgerufen werden kann? (2)
    • 6.9 Wie kann erreicht werden, das Datensätze eines Domänen-Objekt auf einer bestimmten PID abgelegt werden? (2)
    • 6.10 Wie ist der offzielle Weg, um im Repository auf TypoScript-Settings zuzugreifen? (1)
    • 6.11 Welche Aussagen über TypoScript für Backend-Module sind richtig? (2)
    • 6.12 Ist es möglich, stdWrap in den Settings zu verwenden, um z.B. eine dynamische Berechnung von Werten zu ermöglichen? (1)
    • 6.13 Ist es möglich, eigene Conditions zur Verwendung in TypoScript zu implementieren? (1)
    • 6.14 Wie kann die Eigenschaft title des Objekts blog in der TypoScript-Bibliothek lib.path weiterverwendet werden? (2)
    • 6.15 Können eigene cObjects zur Verwendung in TypoScript hinzugefügt werden? (1)
    • 6.16 Wie ist es möglich, ein TypoScript-Objekt im Controller zu erhalten? (1)
    • 6.17 Wie kann man mehrere Werte in einem Feld (z.B. innerhalb der Seiteneigenschaften) über TypoScript parsen und verarbeiten? (1)
    • 6.18 Wie kann man ein Array als TypoScript-Objekt parsen lassen? (1)
  • 7. Security
    • 7.1 Ist es möglich, in einer Action dynamisch (z.B. per JavaScript) Formularfelder im Frontend hinzuzufügen? (1)
    • 7.2 Wie lauten die Abfragen, um einen Frontend-User zu identifizieren, der Mitglied der Gruppe “news” (UID = 5) ist? (2)
    • 7.3 Du implementierst folgenden Code in einem Repository - was ist falsch daran? (1)
    • 7.4 Wo liegt der Unterschied in der Verwendung von {content} im folgenden Script? (1)
    • 7.5 Wie kann zuverlässig die UID des eingeloggten Frontend-Users ermittelt werden? (1)
    • 7.6 Du hast eine Sicherheitslücke in einer Extension entdeckt, die nicht zum Core gehört. Was tust Du als erstes? (1)
    • 7.7 Was ist falsch an folgendem Code? (1)
    • 7.8 Als verantwortungsbewusster Entwickler sollte man sich immer über Sicherheitslücken auf dem Laufenden halten - wie kann man das am besten machen? (1)
    • 7.9 Was ist die Aufgabe der FormProtectionFactory? (1)
  • 8. Errors & Validations
    • 8.1 Wie kann man auf ein nicht-valides Domänenobjekt $blog in einer Action new zugreifen? (2)
    • 8.2 Kann man auf Validierungsfehler des Objekts $blog im Controller zugreifen? (1)
    • 8.3 Welche Validation Annotations sind prinzipiell gültig? (3)
    • 8.4 Von welcher Validator-Klasse leiten alle Default-Validatoren ab? (1)
    • 8.5 Was (wenn überhaupt) wird benötigt, um Optionen in einem Validator zu verwenden - z.B. Pluswerk.Simpleblog:Word(max=3)? (1)
    • 8.6 Welche Auswirkung hat eine Methode errorAction() im Controller? (1)
    • 8.7 Ist es möglich, Objekte manuell zu validieren? (1)
  • 9. Caching
    • 9.1 Wie ist es möglich, den Cache der aktuellen Seite nach einer Schreiboperation zu löschen, selbst wenn das Plugin gecacht ist? (1)
    • 9.2 Extbase verwendet einen sogenannten “Reflection-Cache” - ist es möglich, diesen zu deaktivieren? (1)
    • 9.3 Kann man alle Caches gemeinsam löschen? (1)
    • 9.4 Was sind die Unterschiede zwischen den Methoden get() und getCache() im Cache-Manager? (2)
    • 9.5 Welche Caching-Gruppen existieren im Core? (1)
    • 9.6 Wie lässt sich feststellen, ob es einen Cache-Eintrag für einen Identifier gibt? (2)
    • 9.7 In welcher Datei werden (unter anderem) die Einstellungen des Caching-Frameworks per Default vorgenommen? (1)
    • 9.8 Kann man das Caching-Framework global abschalten? (1)
    • 9.9 Was muss gemacht werden, um einen eigenen Cache simpleblog_cache verwenden zu können? (1)
  • 10. Repositories & Query-Manager
    • 10.1 Welche Repository-Methode benötigt man, um zu überprüfen, ob in einem Domain-Model in einer Eigenschaft, die eine m:n Relation ist, ein bestimmter Wert vorhanden ist? (1)
    • 10.2 Welche Repository-Methode benötigt man, um zu überprüfen, ob in einem Domain-Model der Wert einer Eigenschaft in einem von mehreren möglichen Werten vorkommt? (1)
    • 10.3 Wie kann erreicht werden, dass alle Methoden eines Repositories das Ergebnis sortiert zurückgeben? (1)
    • 10.4 Was muss anstelle der drei Fragezeichen notiert werden, damit der fullname absteigend sortiert wird (Datenbank MySQL)? (2)
    • 10.5 Es gibt zwei Domain Objekte Artikel und Seite, die 1:n verknüpft sind. Wie kann ich alle Artikel finden, die auf einer Seite einen Suchstring beinhalten? (1)
    • 10.6 Wie kann man erreichen, dass das Repository Daten von der Seite mit der UID = 0 ermittelt? (2)
    • 10.7 Welche Aussage über den Persistence-Manager ist richtig? (1)
    • 10.8 Was fehlt in folgendem Script anstelle der Fragezeichen, damit das Datenbank-Feld first_name der Tabelle fe_users auf die Property firstName in dem Domain-Model User gemappt wird? (1)
    • 10.9 Ein Domain-Model besitzt eine Relation mit dem Namen parent zu sich selbst. Ist es möglich, diese im Query-Manager abzufragen? (1)
  • 11. Dokumentation
    • 11.1 Wo befindet sich die Dokumentation für eine Extension? (1)
    • 11.2 In welches Verzeichnis platziert man Bilder in einem TYPO3 Extension ReST Dokument? (1)
    • 11.3 Was wird benötigt, um im TER (bzw. auf docs.typo3.org) eine Dokumentation für eine Extension anzuzeigen? (2)
    • 11.4 Welche Dateien können in einem Documentation-Verzeichnis existieren? (3)
  • 12. Miscellaneous
    • 12.1 Welche der Annotations hat in Extbase keine Auswirkung? (2)
    • 12.2 Welche Formate für die Datei ext_icon werden zur Zeit nicht unterstützt? (2)
    • 12.3 Welche Fehler im Sinne der Coding-Guidelines enthält der folgende Code? (3)
    • 12.4 Wie lässt sich folgender Code verkürzen? (1)
    • 12.5 Ist es möglich, die folgende Annotation auszuwerten? (1)
    • 12.6 Du befindest Dich in der Entwicklung einer Extension und jede neu hinzugefügte Klasse wird mit einer Fehlermeldung quittiert, die besagt, dass der Autoloader die Klasse nicht finden kann - warum? (1)
    • 12.7 Wie sollte man am Besten das Debugging vom Objekt $object in Extbase durchführen? (1)
    • 12.8 Was macht der folgende Code, der so im Controller auftauchen könnte? (1)
    • 12.9 Wie kommt man in Extbase an die Daten des aktuellen Content-Objekts? (1)
    • 12.10 Wie erhält man verschiedene FlashMessageQueues zur selben Zeit? (1)
    • 12.11 Wie kann man einen CommandController so einschränken, dass dieser zwar per Kommandozeile, aber nicht per Scheduler ausführbar ist? (1)
  • 13. Anhang
    • 13.1 Überblick über alle Fragen
  • Anmerkungen

Die Leanpub 60-Tage 100% Zufriedenheitsgarantie

Innerhalb von 60 Tagen nach dem Kauf können Sie mit nur zwei Klicks eine 100% Rückerstattung für jeden Leanpub-Kauf erhalten.

Technisch gesehen ist das ein Risiko für uns, da Sie die Buch- oder Kursdateien so oder so behalten. Aber wir sind so überzeugt von unseren Produkten und Dienstleistungen sowie von unseren Autoren und Lesern, dass wir gerne eine vollständige Geld-zurück-Garantie für alles anbieten, was wir verkaufen.

Sie können nur herausfinden, wie gut etwas ist, indem Sie es ausprobieren, und dank unserer 100% Geld-zurück-Garantie gehen Sie dabei buchstäblich kein Risiko ein!

Es gibt also keinen Grund, nicht auf den 'In den Warenkorb'-Button zu klicken, oder?

Vollständige Bedingungen ansehen...

Verdienen Sie 8$ bei einem Verkauf von 10$ und 16$ bei einem Verkauf von 20$

Wir zahlen 80% Tantiemen auf Käufe von 7,99$ oder mehr und 80% Tantiemen abzüglich einer Pauschale von 50 Cent auf Käufe zwischen 0,99$ und 7,98$. Sie verdienen 8$ bei einem Verkauf von 10$ und 16$ bei einem Verkauf von 20$. Wenn wir also 5000 nicht zurückerstattete Exemplare Ihres Buches für 20$ verkaufen, verdienen Sie 80.000$.

(Ja, einige Autoren haben auf Leanpub bereits viel mehr als das verdient.)

Tatsächlich haben Autoren bereitsüber 14 Millionen Dollar durch das Schreiben, Veröffentlichen und Verkaufen auf Leanpub verdient.

Erfahren Sie mehr über das Schreiben auf Leanpub

Kostenlose Updates. DRM-frei.

Wenn Sie ein Leanpub-Buch kaufen, erhalten Sie kostenlose Updates, solange der Autor das Buch aktualisiert! Viele Autoren nutzen Leanpub, um ihre Bücher während des Schreibprozesses zu veröffentlichen. Alle Leser erhalten kostenlose Updates, unabhängig davon, wann sie das Buch gekauft oder wie viel sie bezahlt haben (einschließlich kostenloser Bücher).

Die meisten Leanpub-Bücher sind als PDF (für Computer) und EPUB (für Smartphones, Tablets und Kindle) verfügbar. Die verfügbaren Formate eines Buches werden in der oberen rechten Ecke dieser Seite angezeigt.

Schließlich haben Leanpub-Bücher keinen DRM-Kopierschutz-Unsinn, sodass Sie sie problemlos auf allen unterstützten Geräten lesen können.

Erfahren Sie mehr über Leanpubs E-Book-Formate und wo Sie sie lesen können

Auf Leanpub schreiben und veröffentlichen

Mit Leanpub können Sie ganz einfach E-Books und Online-Kurse schreiben, veröffentlichen und verkaufen - sowohl während der Entstehung als auch nach Fertigstellung!

Leanpub ist eine leistungsstarke Plattform für engagierte Autoren, die einen einfachen, eleganten Schreib- und Veröffentlichungsprozess mit einem Shop verbindet, der sich auf den Verkauf von E-Books in Entstehung konzentriert.

Leanpub ist eine magische Schreibmaschine für Autoren: Schreiben Sie einfach in normalem Text und klicken Sie zur Veröffentlichung Ihres E-Books nur auf einen Button. (Wenn Sie Ihr E-Book auf Ihre eigene Art erstellen, können Sie sogar Ihre eigenen PDF- und/oder EPUB-Dateien hochladen und mit einem Klick veröffentlichen!) Es ist wirklich so einfach.

Erfahren Sie mehr über das Schreiben auf Leanpub