hi,
Hello,
Zudem bezweifle ich aus rein praktischen Gründen, dass Du bei einem Schreibvorgang von 50 oder 100 Byte in eine Datei noch einen Lesevorgang dazwischen geschoben bekommst vom Betriebssystem.
Das hängt erstmal davon ab, wie groß der Buffer definiert wurde auf der atomistischen Ebene, also nicht in der Hochsprache, sondern der API-Funktion des Filesystems. Bufferoperationen werden immer geschlossen abgwickelt, aber um 100 Bytes zu schreiben, könnte man schon zwei Schreibzyklen benötigen.
Jo, zum testen der Geschäftslogik reicht das ja erstmal. U.u. sogar für den Betrieb.
Das Wissen, dass es möglich ist, einfach zu missachten, ist schlimmer, als nur Faulheit, zumal man dem Missstand ja mit den paar passenden Zeilen entgegen wirken kann.
Das hat mit Faulheit nix zu tun. Das ist eine Abwägung von Zeiteinsatz und Nutzen. Und die "paar" Zeilen erübrigen sich u.U. sowieso, wenn man das Lesen und Schreiben dem "Objekt" überlässt, dass dafür zuständig ist, nämlich den Datenbankserver oder der eigenen FileHandling-Klasse.
Und solange hier solche Thesen vertreten werden, macht es mir absolut keinen Spaß, mich mit OOP in PHP, riesig aufgeblasenen Klassen, Design-Patterns, Callback Functions, und sonst irgend welchem Trödel auseinanderzusetzen.
Nur weil man in der Theorie weit über 700 neue Begriffe erfunden hat, muss man nicht die Grundlagen der technischen Informatik missachten!
OOP heißt in dem Fall einfach, dass ich eine Klasse bau, damit ich nicht den "global space" "pollute". So wie ich es gemacht habe. Mit privaten und öffentlichen Methoden.
Die Frage ist ja auch, was man sich dann im worst-case für einen Fehler einhandelt. Dass doch zweimal rot kommt, obwohl man das nicht wollte?
Darum geht es nicht. Es werden Techniken und "Best Practices" verbreitet, die absolut jeder Gewissenhaftigkeit entbehren. Man erzieht sich damit zur Schlampigkeit. Diese verursacht/ermöglicht dann Löcher in den Systemen und ermöglicht NSA-Zugriffe, BEAST, Heartbleed, thorn, etc...
Das sind hier zwei paar Schuhe. Die logische Aufgabe zu erfüllen ist eine (Klasse). Sich ums sichere Schreiben zu kümmern eine andere. Ich könnte dann in der read oder write Methode der Color-Klasse einfach TomsSecure::write() aufrufen, oder TomsSecure::read() - wenn es denn eine solche gäbe. Vielleicht macht es auch mehr Sinn, eine Instanz dieser Klasse zu haben, und keine statischen Funktionen. Und damit ist dann auch schon Sinn und Zweck und Vorteil von "OOP" erklärt. Mehr gibts da m.E. in der "Theorie" auch nicht. Wie das dann professionell funktioniert, kann man sich in ZendFramework oder YUI (für Javascript) und vermutlich "100.000" anderen anschauen.
mfg
tami