hi MB,
OOP ist eine praktische Angelegenheit. Demgegenüber gibt es Theoretiker die noch nie mit OOP was Praktisches gemacht haben und OOP als etwas wahnisinnig kompliziertes hinstellen. Dabei werden Begriffe eingebracht, die überhaupt keinen Bezug zur Praxis haben.
Aber wie sieht nun die Realität aus? Praktisch kommen Mehrfachvererbung und komplizierte Klassenhierarchien höchst selten zur Anwendung. Vielmehr wird man auch für eine größere Geschichte eine Basisklasse schreiben und die Vererbung nur einmal anwenden wenn es darum geht die Aufgabe zu spezialisieren. Für einen solchen Entwurf braucht man kein UML.
Des Weiteren: Klassenvariablen und Klassenfunktionen verhalten sich statisch genauso wie globale Variablen unf Funktionen. Deren Verwendung kann zu Problemn führen wenn Code im Speicher verbleibt (mod_php, fast_cgi) so daß man immer aufpassen muss daß richtige Daten nicht in falschen Händen landen.
Idealerweise werden von daher sämtliche Daten die vom Request bis zur Response anfallen in einer Instanz gekapselt die am Ende zerstört wird. Kapselung ist ein wesentlicher Bestandteil von OOP und macht statische Symbole praktisch überflüssig. Und jetzt guck mal in Deine Klassen wie oft Du den Destruktor verwendest.
Lass Dich nicht beirren. Und ja, Festhalten ist besser als Loslassen. MFG