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

Christian Kuhn lollingola at lollingola.de
Wed Jul 18 01:05:58 CEST 2007


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