Während der Entwicklung von Typo3-Extensions ändert, erstellt und erweitert man häufig Klassen in seinem eigenen Namespace. Durch das (sinnvolle) Typo3-Caching werden diese Klassennamen und Pfade in einer PHP-Datei gecached (typo3conf/autoload/autoload_classmap.php
).
Leider greift der Klick auf den „Typo3 Blitz“ mit der Option „Alle Caches leeren“ nicht, um auch diese Dateien neu aufzubauen. Typo3 zwingt den Entwickler ins Install-Tool und dort zu der Option „Create autoload information for extensions“. Dieser Wechsel ist relativ nervig – und eine klassische Frustrations-Quelle, wenn im Frontend mal wieder das „striped Zebra of death“ mit einem Fatal Error erscheint.
Mit wenigen Zeilen Script bekommt man das Löschen der autoload-Datei auch über den Typo3 „Cache leeren“ Blitz im Backend gelöst:
In die Datei ext_localconf.php
der eigenen Extension einen Hook registrieren, der beim Aufruf des „Cache leeren“ ausgeführt wird:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearCachePostProc'][] = 'Deine\Extension\Hooks\ClearCacheHook->clearAutoloadCache';
Die Datei Classes/Hooks/ClearCacheHook.php
anlegen mit diesem Code:
<?php
namespace Deine\Extension\Hooks;
use TYPO3\CMS\Core\Core\ClassLoadingInformation;
class ClearCacheHook {
/**
* Löscht die autoload-Dateien, wenn der Typo3-Blitz
* geklickt wird.
*
* @param array $params
*/
public function clearAutoloadCache ( array $params ) {
ClassLoadingInformation::dumpClassLoadingInformation();
}
}
Und dann? Naja… dann eben (leider) noch ein Mal – zum letzten Mal – im Install-Tool den „dump autoload“ machen.
Für Suchmaschinen: rebuild typo3 autoload cache using typo3 lightning-Button. Typo3 Cache für Klassen-Namen per Klick auf Typo3-Blitz löschen. Über Typo3 „Alle caches leeren“ auch autoload-Datei neu aufbauen. Autoload-Dateien werden nicht gelöscht, wenn Cache geleert wird. Wie autoload-Datei in Typo3 neu aufbauen. Eigene Classes in Typo3 registrieren. Register custom php Classes in Typo3. Extension classes are not loaded after clearing cache.