voodoo44 schrieb:
Wo der Sinn bei 2. ist? Na dabei, dass man einen String mit einem String und nicht mit 'irgendwas' vergleichen sollte? Dass man keinen int auf nen String typsicher vergleicht, ist klar - würde ja auch keinen Sinn machen
Ich beschäftige mich zugegebenermaßen selten mit PHP, aber das von mir zitierte macht imho keinen Sinn und ist auch nicht das, was du willst. Der Ausdruck in der Klammer wird zuerst evaluiert und gibt aufgrund der Definition des größer-gleich Operators immer einen boolschen Wert zurück. Willst du den ernsthaft nochmal typsicher auf bool prüfen? Mit den Werten in der Klammer hat das jedenfalls nichts mehr zu tun.
voodoo44 schrieb:
öhm ... man kann es einfacher und schneller lesen, als dieses Ausrufezeichen davor, welches einen impliziten Vergleich darstellt und auch schnell mal übersehen wird, wenn man viel Quelltext überfliegt. Das ist im übrigen mit 3. gemeint.
Ah, verstehe. Das ist aber eigentlich eher verpöhnt und überhaupt nicht "1337", wie du es genannt hast, eher anfängermäßig. Mag sein, dass das bei PHP etwas lockerer ist aufgrund des expliziten Vergleichens zur Sicherstellung der Typsicherheit, aber ansonsten findest du sowas nirgends, kannst dir ja mal ein größeres Open-Source Projekt deiner Wahl anschauen. Du schreibst ja auch nicht if i == 7 == false.
http://www.mycsharp.de/wbb2/thread.php?threadid=17536
voodoo44 schrieb:
Bei 4. - nun, mein 'Problem' ist, dass er dort eine Konstante verwendet, die den Namen der Datenbank beinhaltet. Das gehört sich nicht und widerspricht dem Gedanken von OOP.
Stimmt, so wie er das gemacht hat ist das natürlich nicht schön. Ansonsten beißen sich Konstanten und OOP aber keinesfalls. Eine Konstante ist zunächst mal nichts anderes als ein nicht veränderbarer Wert, das war's.
Du gehst imho davon aus, dass Konstanten stets global verfügbar sind, das ist aber nicht der Sinn einer Konstante, auch wenn Konstanten gerne hierfür benutzt werden. Und wenn schon, dann kommt es immer noch auf den Kontext an. Enumerationen in neueren Programmiersprachen sind so gesehen auch nichts anderes, als eine Sammlung global verfügbarer Konstanten.
edit: nochmal zum Vergleich oben:
Von allem mal abgesehen ist dein (a >= b) == false (wie das aussieht, das tut doch weh

...) nichts anderes als (a < b), da brauchst du nirgens einen Negationsoperator.