wenn man sich von vorne herein daran hält, mag man diesen und andere makel ignorieren können, aber sinn und zweck von kapselung ist beispielsweise bestimmte zugriffspfade einzuhalten ...
php verfolgt an dieser stelle das motto, "wir haben zwar einen tresor für wertvolle dinge, aber der ist grundsätzlich nicht abgeschlossen und sperrangelweit offen, weil diebstahl ja verboten ist ..."
das man im zweifel überall dran kommt, ist klar ...
das man sich an bestimmte regeln bei der entwicklung halten sollte ist auch klar ...
aber php führt das ganze ad absurdum, wenn nichtmal das sprachkonstrukt eine grundlegende trennung zwischen klassen hinbekommt ... ducktyping hin oder her, ein objekt sollte seine methoden kennen, eine methode sollte die klasse des objekts kennen auf dem sie opperiert, und es macht mal so überhaupt keinen sinn aus oo sicht wenn eine nicht statische methode einer klasse mit einem objekt aufgerufen wird, wohlgemerkt nicht als parameter sondern als verweis auf das objekt in dessen kontext die methode aufgerufen wurde, das einer völlig anderen klasse angehört, die keinerlei vererbungsbeziehung zur deffinierenden klasse hat.
im übrigen scheint es php reichlich egal zu sein, wie die sichtbarkeit der methode deffiniert wurde ...
in meinem beispiel als "public function" ist die methode als nicht statisch deklariert
aus kompatiblitätsgründen mit php4 wäre die deklaration als "function" dagegen implitiz "public static function" ... bei solchen legacy konstrukten kann ich es ja noch halbwegs nachvollziehen, das etwas unsauber ist weil man an altlasten gebunden ist ...
aber das grundlegende konzept das php als oo konzept fährt ist so schwammig wie der rest der sprache ... man unterscheidet 2 arten von kontexten statisch und objekt bezogen ... das gibt es bei c++ und co auch? VORSICHT ... dem ist nicht so ... sprachen wie c++,java und co unterscheiden hier statische kontexte, und instanz bezogene kontexte, soll heißen instanzen einer klasse teilen sich den satz an nicht statischen methoden ihrer klasse, und diese methoden sind nur für diese instanzen deffiniert ... allenfalls noch für instanzen von klassen die von der deffinierenden klasse erben. das ist einer der wesentlichen punkte einer sauberen oo sprachdefinition ...
theoretisch müssten alle deine php funktionen vor der benutzung von $this die klassenzugehörigkeit prüfen ... ist das logisch? welchen sinnvollen nutzen hat diese aufweichung des etablierten oo konzepts?