[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