TYPO3 13 depreciert zwei TCA-Mechanismen, die in allen vier Paketen des Projekts verbreitet sind:
searchFields in ctrl (wird nicht mehr ausgewertet) und
ExtensionManagementUtility::addPiFlexFormValue() (zugunsten von
columnsOverrides aufgegeben). Die Session zeigt, wie Copilot mit
Fehlermeldungen als Kontext und
Migrationscode als Vorlage großflächige Refactorings
effizient und sicher durchführt.
Vier Pakete, eine Session: Die Änderungen betreffen
alltecfobapackage, mmgallery, pb_downloadform und
afproductfinder. Copilot analysiert alle vier selbstständig, ohne dass jedes Paket
einzeln genannt werden muss.
tx_afproductfinder_product.php: searchFields aus ctrl entfernen + searchable => false beim link-Feldtx_mmgallery_domain_model_gallery.php: searchFields entfernentx_pbdownloadform_domain_model_userdata.php: searchFields entfernensearchFields erfolgreich entfernt und searchable => false beim link-Feld hinzugefügt.
searchFields noch das fehlende searchable => false noch vorhanden sind.ExtensionManagementUtility::addPiFlexFormValue() is used. this method is deprecated, please replace the usages in the 4 folders using this update method:$GLOBALS['TCA']['tt_content']['types']['my_plugin']['columnsOverrides']['pi_flexform']['config']['ds'] = 'FILE:EXT:my_extension/Configuration/FlexForm.xml';
addPiFlexFormValue() zu finden und diese durch die neue TCA-basierte Methode zu ersetzen.addPiFlexFormValue(). Ich ersetze es durch direktes Definieren in der TCA mit columnsOverrides.Diese Session zeigt, wie zwei voneinander unabhängige TYPO3-Deprecations in einer kompakten Session erledigt werden. Das Muster ist immer gleich: offizieller Migrationstext als Kontext + "fix in the 4 folders". Copilot versteht beide Prompts sofort und liefert vollständige, paketübergreifende Änderungen.
Zwei Besonderheiten stechen hervor: In Austausch 1 schlägt ein Edit zunächst fehl – Copilot bemerkt das beim Nachprüfen und korrigiert sich selbst. In Austausch 2 meldet grep nach den Änderungen noch alte Treffer. Copilot hinterfragt das tool-Ergebnis, liest die Dateien direkt und bestätigt die Korrektheit. Beide Male zeigt Copilot gutes Selbst-Verifikationsverhalten.
Wichtigste Erkenntnis: Bei Deprecation-Migrationen ist die offizielle Fehlermeldung oder Dokumentation der beste Prompt. Wer copy-pastet statt selbst formuliert, gibt Copilot die exakte Terminologie – und bekommt exakten Code zurück.
TYPO3-Migrationsmeldungen enthalten alle nötigen Informationen: Feldname, Tabellenname, altes Verhalten, neues Verhalten. Einfach kopieren – keine eigene Beschreibung nötig. Copilot versteht die Sprache der Deprecation-Logs.
Statt "ersetze die alte Methode durch die neue" funktioniert "ersetze mit diesem Pattern" deutlich besser. Der konkrete Code aus der Doku oder dem Changelog ist die präziseste Instruktion, die es gibt.
Copilot sucht paketübergreifend, erstellt einen Plan und führt ihn dann systematisch aus. Das ist das gewünschte Verhalten: Niemals blind schreiben, immer erst verstehen. Bei 11 Dateien in 4 Paketen ist das besonders wichtig.
Wenn ein Replace-Versuch nicht angewendet wird (z.B. wegen Whitespace-Unterschieden), erkennt Copilot das beim Nachprüfen und wiederholt den Edit mit angepasstem Muster. Das ist kein Fehler – es ist Selbstverifikation. Wichtig: Copilot dabei nicht unterbrechen.
Grep kann nach Dateiänderungen noch gecachte Ergebnisse liefern. Wenn Copilot einen Widerspruch zwischen grep-Output und direktem File-Read bemerkt, verlässt er sich auf den direkten File-Read. Das ist das richtige Verhalten – als Entwickler den gleichen Ansatz verfolgen: bei Unsicherheit die Datei direkt prüfen.
Bei 11 geänderten Dateien ist eine abschließende Syntax-Prüfung essentiell. Copilot führt sie in dieser Session selbstständig durch – aber bei besonders kritischen Migrationen explizit danach fragen: "Prüfe die PHP-Syntax aller geänderten Dateien".
| Element | Qualität | Anmerkung |
|---|---|---|
| Austausch 1 – Prompt | ✓ Sehr gut | Fehlermeldungen direkt kopiert, Scope klar mit "the 4 folders" |
| Austausch 1 – Analyse | ✓ Sehr gut | Alle 4 Pakete durchsucht, 3 betroffene Dateien korrekt identifiziert |
| Austausch 1 – Selbstkorrektur | ⚠ Mittel | Erster Edit schlug fehl; Copilot bemerkt es und korrigiert – kostet einen Extra-Schritt |
| Austausch 1 – Validierung | ✓ Sehr gut | Dateien nach Änderungen nochmals gelesen und geprüft |
| Austausch 2 – Prompt | ✓ Sehr gut | Deprecated method benannt + exakter Replacement-Code als Vorlage |
| Austausch 2 – Durchführung | ✓ Sehr gut | 11 Dateien in 4 Paketen vollständig und systematisch migriert |
| Austausch 2 – Grep-Anomalie | ⚠ Hinweis | Grep liefert veraltete Ergebnisse; Copilot löst das durch direkten File-Read |
| Austausch 2 – Syntax-Check | ✓ Sehr gut | PHP-Syntax aller geänderten Dateien validiert |
| Veraltete API | Ersatz | Betroffene Dateien |
|---|---|---|
| ctrl → searchFields | Automatische Erkennung über Feldtyp; searchable => false für Ausschlüsse | 3 Dateien (afproductfinder, mmgallery, pb_downloadform) |
| addPiFlexFormValue() | $GLOBALS['TCA']['tt_content']['types'][$sig]['columnsOverrides']['pi_flexform']['config']['ds'] | 11 Dateien (pb_downloadform, mmgallery, alltecfobapackage ×9) |