Bei meinem letzten Ausflug zu PHP und C++ ist mir eine Sache wieder eingefallen, die ich in C++ immer sehr interessant fand und mir bei PHP irgendwie fehlt.
Man kann dort nämlich Klassenmethoden das Schlüsselwort const nachstellen und teilt dem Compiler somit mit, dass diese Methode das Objekt nicht verändert. Versucht sie es doch, gibt es einen Fehler beim übersetzen.
Hier wird das ganze noch mal ausführlicher erklärt (englisch). Auch wenn die Erklärung durch die ganzen Zeiger in C/C++ erheblich komplizierter wird :-)
Diese const-Deklarationen zwingen einen bei der Entwicklung dazu, genau zu überlegen, was man da eigentlich macht. Denn natürlich dürfen auch alle Methoden, die man innerhalb einer const-Methode benutzt, das Objekt selbst wieder nicht verändern… So manches leichtfertiges „ich mache hier mal ein const hin, da die Methode ja eh nix verändert“ kann dann in ganz schön viel Arbeit ausarten.
Aber gerade bei der Verwendung eines Frameworks wäre es an einigen Stellen ganz hilfreich zu wissen, wo Daten verändert werden und wo nicht. Und natürlich auch in meinem eigenen Code.
Gibt es dazu in PHP eigentlich Überlegungen, etwas ähnliches einzuführen? Und wie sieht es bei anderen webaffinen Programmiersprachen aus?