Al­te Be­kann­te und ihr PHP-Code


Ich ge­be zu: Ich mag PHP nicht. Es ist ei­ne un­struk­tu­rie­re Dad­del­spra­che, mit der man zwar schnell vie­les ma­chen kann, aber nur we­ni­ges rich­tig struk­tu­riert de­si­gnen. Je­der halb­wegs kom­ple­xe Code, der dann auch noch struk­tu­riert und – wich­tig – si­cher sein soll, ver­liert sich in viel­fa­chen In­di­rek­tio­nen von ei­nem mehr­di­men­sio­na­len Ar­ray 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 ei­ne an­de­re Spra­che su­chen.

Vor kur­zem un­ter­hielt ich mich mit ei­nem Be­kann­ten über ei­nen ge­mein­sa­men drit­ten Be­kann­ten, mit dem wir bei­de die­sel­be ne­ga­ti­ve Er­fah­rung ge­macht hat­ten: Un­zu­ver­läs­sig, nach­läs­si­ger Pro­gram­mier­stil, kaum wart­bar. Wir bei­de hat­ten ihn schon mal je­weils im Lau­fe ei­nes Pro­jek­tes „ver­lo­ren“ und an­schlie­ßend sei­nen Teil weg­ge­wor­fen und neu ge­schrie­ben. War ein­fa­cher.

Was mir ent­gan­gen war: In ei­nem Mo­dul un­se­res Sys­tem kreuch­te der fünf Jah­re al­te Ori­gi­nal­code noch her­um. Und na­tür­lich ist ge­nau die­ser Teil Amok ge­lau­fen, als ich jetzt ei­ne Por­tie­rung von PHP 4 auf PHP 5 vor­ge­nom­men ha­be. Hö­he­punkt pro­gram­mier­tech­ni­scher Meis­ter­leis­tun­gen: Ei­ne hier­ar­chi­sche Da­ten­struk­tur wird re­kur­siv ge­parst. „((a b)(c d))“ wird al­so zu „Array([0]=>Array([0]=>"a" [1]=>"b") [1]=>Array([0]=>"c" [1]=>"d"))„, wo­bei je­des Klam­mer­paar von ei­ner neu­en In­stanz der­sel­ben Par­ser­klas­se aus­ein­an­der­ge­pflückt wird.

Dumm nur, wenn man statt neu­er In­stan­zen im­mer den­sel­ben Par­ser nimmt, der zu­dem nur ei­nen Satz in­ter­ner Va­ria­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 ha­be ich die PHP-Spa­ghet­ti um­ge­baut, bis der Code das mach­te, was er soll.

Was ich dar­an jetzt PHP an­krei­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 Ka­bi­nett­stü­cken da­zu ge­führt hat, dass die­se völ­lig ver­hunz­ten Par­ser­kon­struk­te fünf Jah­re klag­los un­ter PHP 4 ge­lau­fen sind…

Schreibe einen Kommentar

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