[TYPO3-german] Typo3 4.0 und Extensions (WICHTIG für Ext-Developer)
Christian Welzel
gawain at camlann.de
Wed Jan 25 18:16:24 CET 2006
Hallo Leute!
Bald kommt ja Typo3 4.0 mit dem neuen Modul DBAL. was es endlich
erlauben wird, Typo3 auch auf anderen DBMS als Mysql einzusetzen.
Ich habe mich also mal ans beta-Testen gemacht und habe da so einiges
gefunden, wo dringend Nachholebedarf besteht. Hier also mal eine kleine
Liste mit den wichtigsten Sachen.
Jeder, der seine Ext im TER hat, sollte sie zeitnah überprüfen, ob
sie die Hinweise erfüllt und wenn nicht, eine Fehlerbehebung durchführen.
Also hier mal meine Liste:
1) Die Verwendung der mysql_*() Funktionen ist unter allen Umständen
zu unterlassen !
Ein einfaches Portieren einer Ext ist mit den Funktionen der Klasse
t3lib_db möglich. Diese kann man leicht über die Variable
$GLOBALS['TYPO3_DB'] ansprechen. Alle Mysql-Funktionen haben ein
dort Gegenstück. So kann man z.B.
mysql_query() durch $GLOBALS['TYPO3_DB']->sql_query() ersetzen.
2) das Feld fe_group einer Tabelle muss vom Typ varchar sein.
Der Kern von Typo3 behandelt dies so und die entsprechenden
Tabellen sind alle mit varchar(100) angelegt. Mysql hat leider die
Eigenart, das implizit zu konvertieren. Bei allen anderen DBMS
resultiert anderes in einem Syntax-Fehler.
3) Sollen Werte für eine Query in Hochkomma oder Anführungszeichen gestellt
werden, so benutzt bitte die Funktionen
$GLOBALS['TYPO3_DB']->quoteStr() und $GLOBALS['TYPO3_DB']->fullQuoteStr().
Die beliebte Verwendung von "" zum Quoten von Werten ist nur bei Mysql
möglich und führt bei anderen DBMS zu Syntax-Fehlern.
4) Schreibt bitte standard-konformes SQL. Konstrukte wie z.B.
SELECT count(distinct(uid)) FROM table
SELECT * FROM table GROUP BY uid
sind nicht SQL-konform und werfen Syntax-Fehler bei nicht-Mysql-DBMS.
Beachtet im Besonderen, dass die Typen der Spalten auch den Werten
entsprechen, die darin gespeichert werden sollen.
Eine Spalte "counter text" anzulegen und dann "UPDATE counter=counter+1"
funktioniert leider in Mysql, ist aber Humbug.
Ich glaube, das war es erstmal, auch wenn ich sicher einige Punkte vergessen/
verdrängt habe.
Jeder Entwickler sollte mit Typo3 4.0 seine Extensions auch mal unter einem
anderen DBMS als Mysql testen, damit die Qualität von Typo3 und der Ruf nicht
darunter leidet, dass zwar mit DBAL geworben wird, aber nichts damit funktioniert.
Danke fürs Lesen.
--
MfG, Christian Welzel
GPG-Key: http://www.camlann.de/key.asc
Fingerprint: 4F50 19BF 3346 36A6 CFA9 DBDC C268 6D24 70A1 AD15
More information about the TYPO3-german
mailing list