[Typo3-german] Problem und Debug-Meldung bei Mehrfachvererbung einer Basisklasse

Michael Stucki michael at typo3.org
Tue Nov 8 18:42:32 CET 2005


Hallo Kussmann,

> Ich hatte gestern einen Bug, der mich relativ lange beschäftigt hatte. Im
> Endeffekt lag der Bug darin dass eine Basisklasse zweimal (von je einer
> Extension) erweitert wurde, obwohl dies nicht zulässig ist (jede
> Basisklasse darf nur einmal erweitert werden; dies ist ein Design-Fehler
> von Typo3), ich dies nicht wusste und beide Erweiterungen (der
> Basisklasse) sich im Wege standen...auf diesen Fehler muss man erstmal
> kommen :-(
> 
> Damit mir dies nicht noch einmal passiert, habe ich folgende zwei
> Funktionen der Klasse 'class.t3lib_div.php' (welche für's instanzieren von
> Objekten zuständig sind) umgeschrieben. Wenn man nun im
> Installations-Script das Debuging einschaltet, so erhält man eine
> Fehlermeldung, wenn eine Basisklasse zwei- oder mehrfach erweitert wird.
> 
> Hier der von mir geänderte Code:
> 
> [...]
> 
> Was haltet ihr von meiner Erweiterung? 
> Im Endeffekt wird (wenn das debuging eingeschaltet ist) nach erweiterten
> Klassen gesucht (per grep-Befehl). Werden mindestens zwei solcher Klassen
> gefunden (welche auch in der typo3-Instanz aktiviert sind) so wird eine
> Debug-Meldung generiert (mit den Pfaden zu den entsprechenden Extensions).

Wie Peter schon angedeutet hat: Ist etwas unflexibel das ganze.
Eine elegantere Lösung wäre, den Inhalt von
$GLOBALS['TCA']['BE'/'FE']['XCLASS'] zu überprüfen.

Das Problem ist bloss, dass diese Werte standardmässig einfach mit PHP-Code
überschrieben werden. Vorher/Nachher Vergleiche kosten dafür einiges an
Performance.

Eine andere Idee wäre deshalb, die temp_CACHED_* Files nach "XCLASS" zu
greppen. Ist allerdings erneut mühsam da langsam.

Lösungsvorschlag:
Durchsuch das nächste Mal die temp_CACHED_* Files manuell nach "XCLASS".

Liebe Grüsse
- michael
-- 
Use a newsreader! Check out
http://typo3.org/community/mailing-lists/use-a-news-reader/



More information about the TYPO3-german mailing list