[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