[TYPO3-german] FE-Plugin: pivars leer wenn man konstruktor verwendet!!!

Roland Müller roland.mueller at flad.de
Wed Jul 18 08:54:24 CEST 2007


Ja das ist ja mau.............miau :(

Christian Kuhn schrieb:
> Hi,
> 
> 
> Roland Müller wrote:
>> hab grad mit Bestürzen festgestellt dass man für pi1 keinen 
>> Konstruktor verwenden darf, ansonsten sind die pivars leer!!!
>> Beide Konstruktoren werden aufgerufen von tslib_pibase und tx_ext_pi1.
>> Der tx_ext_pi1 hatte nichtmal eine Zeile Code.
>> Dennoch leert er die pivars.
>>
>> Das ist doch crank! Warum ist das so?
> 
> 
> Das ist nicht krank, das ist php4 ... ;)
> 
> class tslib_pibase hat einen (gleichnamigen) Konstruktor, der 
> $this->piVars initialisiert. (siehe 
> typo3/sysext/cms/tslib/class.tslib_pibase.php)
> 
> Da alle FE-Extensions von pibase abgeleitet sind (class foo extends 
> tslib_pibase), greift folgender Hinweis in der php-doku:
> 
> "Caution
> PHP 4 doesn't call constructors of the base class automatically from a 
> constructor of a derived class. It is your responsibility to propagate 
> the call to constructors upstream where appropriate."
> 
> (http://de3.php.net/manual/en/language.oop.constructor.php)
> 
> Wenn also ein eigener Konstruktor verwendet werden muss, ist der der 
> urspruenglichen Klasse manuell zu rufen, oder der Code entsprechend 
> nachzubilden.
> Oder man lagert den ganzen Kram direkt nach "main" aus, das wir eh von 
> typo3 gerufen, daher kann man auch dort initialisieren. Bisher hatte ich 
> dadurch noch keinen Fall, den pibase Konstruktor mit Gewalt 
> ueberschreiben zu muessen, lasse mich aber gern eines belehren in dem 
> das noetig ist (abgesehen von aesthetischen oder puristischen 
> oo-gruenden). php4 ist immerhin nur "moechtegern-oo", php5 hat an vielen 
> Stellen massiv dazugelernt, der bereits bestehende Code von typo3 5.0 
> zeigt das.
> 
> 
> Gruesse
> Christian


More information about the TYPO3-german mailing list