Ich bin auch froh das mein Chef keinen Einfluss auf die Programmierung hat :).
Du kannst es nennen wie du willst, aber auch in deinem System gibt es Defaultwerte. Wenn du 10 mal den Aufruf new cCookie(14) in deinem System hast, dann mutiert die 14 zu einem Defaultwert. Bloß musst du eben 10 stellen in deinem System ändern, um aus den 14 ein 21 zu machen.
Außerdem ist dieser Aufruf new cCookie(14) für mich eine simple Objekt Initialisierung mit Parameter Übergabe. Eine Dependency Injection muss für mich aus einem gesonderten Bereich bestehen, der sich primär um den Controllfluss kümmert. Also sowas:
function di()
{
newcObject( new cOtherObject() );
}
Generell stell ich mir die Frage wieso einfachste Dinge mit irre komplizierten Namen versehen werden. Das Problem dabei ist, dass viele meinen Sie haben Ahnung nur weil sie ein paar englische Fachwörter kennen. Ich hab z.B. keine Ahnung was es so alles in einem Auto gibt oder gar wie es funktioniert. Trotzdem kann ich Autofahren.
Das gleiche gilt für die Benennung von Methoden. Nur weil in der Methode für die Lebensdauer kein "Default" vorkommt heißt das noch lange nicht, dass das eine Wert fürs Kuchenbacken ist. Wir dürfen nicht den gleichen Fehler machen wie die Politik und die Sprache Zweckentfremden. Sprache ist zum transportieren von Informationen da und nicht zum täuschen.
Das nach außen nicht direkt der Defaultwert ersichtlich wird stimmt. Da hast du auf jeden Fall recht (und ehrlich gesagt nervt mich das selber, auch die Tatsache das man in php über ein Interface nicht den Typ des Rückgabeparameter bestimmen kann). Du behebst diesen Markel in dem du 10 Aufrufe mit dem Übergabewert 14 hast und somit 10 Stellen an denen du eventuell etwas ändern musst. Ich setze dieses Wissen voraus oder muss es dokumentieren (wie dedlfix es bereits erwähnte). Ersteres bricht die Regeln der OOP. Gut ich würde jetzt sagen bei einem Default wert macht das nichts. Dann kannst du aber sagen dass ein System nicht nur einen Default wert hat und damit hättest du wiederrecht. Und schwups sind wir beim Problem der ersten Frage angelangt und bei meiner Neugier. Ich akzeptiere diesen Markel, dass man eben gegen OOP verstößt. Dafür zentralisiere ich Defaultwerte in einem Singleton und erhoffe mir dadurch Arbeitserleichterung. Und deshalb habe ich mich hier überhaupt zu Wort gemeldet. Dein Ansatz hat mich sehr interessiert, doch konntest du mich bis jetzt nicht überzeugen.
Und nein Objekte haben keine zwei Gesichter sondern x. Wenn du nur eine Eigenschaft hast, welche die Werte zwischen 0 - 99 annehmen kann, hast du schon 100 unterschiedliche mögliche Objekte.
Gruß
OOP (origineller Ohrwurm Produzent)
T-Rex