Alte Bekannte und ihr PHP-Code


Ich gebe zu: Ich mag PHP nicht. Es ist eine unstruk­tu­rie­re Dad­del­spra­che, mit der man zwar schnell vie­les machen kann, aber nur weni­ges rich­tig struk­tu­riert desi­gnen. Jeder halb­wegs kom­ple­xe Code, der dann auch noch struk­tu­riert und – wich­tig – sicher sein soll, ver­liert sich in viel­fa­chen Indi­rek­tio­nen von einem mehr­di­men­sio­na­len Array zum nächs­ten. PHP ist was für Bast­ler und Tüft­ler, aber wer wart- und wie­der­ver­wert­ba­ren Code schrei­ben will, der soll­te sich lie­ber eine ande­re Spra­che suchen.

Vor kur­zem unter­hielt ich mich mit einem Bekann­ten über einen gemein­sa­men drit­ten Bekann­ten, mit dem wir bei­de die­sel­be nega­ti­ve Erfah­rung gemacht hat­ten: Unzu­ver­läs­sig, nach­läs­si­ger Pro­gram­mier­stil, kaum wart­bar. Wir bei­de hat­ten ihn schon mal jeweils im Lau­fe eines Pro­jek­tes „ver­lo­ren” und anschlie­ßend sei­nen Teil weg­ge­wor­fen und neu geschrie­ben. War ein­fa­cher.

Was mir ent­gan­gen war: In einem Modul unse­res Sys­tem kreuch­te der fünf Jah­re alte Ori­gi­nal­code noch her­um. Und natür­lich ist genau die­ser Teil Amok gelau­fen, als ich jetzt eine Por­tie­rung von PHP 4 auf PHP 5 vor­ge­nom­men habe. Höhe­punkt pro­gram­mier­tech­ni­scher Meis­ter­leis­tun­gen: Eine hier­ar­chi­sche Daten­struk­tur wird rekur­siv geparst. „((a b)(c d))” wird also zu „Array([0]=>Array([0]=>"a" [1]=>"b") [1]=>Array([0]=>"c" [1]=>"d"))”, wobei jedes Klam­mer­paar von einer neu­en Instanz der­sel­ben Par­ser­klas­se aus­ein­an­der­ge­pflückt wird.

Dumm nur, wenn man statt neu­er Instan­zen immer den­sel­ben Par­ser nimmt, der zudem nur einen Satz inter­ner Varia­blen hat. Dann geht die gan­ze Baum­struk­tur über den Jor­dan und das Par­sin­g­er­geb­nis sieht so aus: „Array([0]=>"a" [1]=>"b" [2]=>Array([0]=>"a" [1]=>"b") [3]=>"c" [4]=>"d" [5]=>Array([0]=>"c" [1]=>"d"))”. Urks. Zwei Stun­den habe ich die PHP-Spa­ghet­ti umge­baut, bis der Code das mach­te, was er soll.

Was ich dar­an jetzt PHP ankrei­de? Ganz ein­fach: Das hät­te nie funk­tio­nie­ren dür­fen! Ich will lie­ber gar nicht wis­sen, wel­ches pro­gram­mier­tech­ni­sche Kabi­nett­stü­cken dazu geführt hat, dass die­se völ­lig ver­hunz­ten Par­ser­kon­struk­te fünf Jah­re klag­los unter PHP 4 gelau­fen sind…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.