[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