Moin!
Jetzt ist allerdings nirgendwo spezifiziert, dass $this->erde eine Instanz der Klasse Erde ist.
Das kann man codemäßig auch nicht festlegen, jedenfalls nicht für das Attribut.
Da man aber für vernünftig wart- und testbaren Code eine vernünftige Dependency Injection programmiert, wäre die Prüfung für den korrekten Typ von Erde im Sonnensystem-Konstructor zu platzieren. Im einfachsten Fall als Typehinting in der Parameterliste. Im kompliziereren Fall (Array von Planeten) wäre, wenn tatsächlich der Bedarf besteht, jedes einzelne Arrayelement auf korrekten Typ zu prüfen.
Mir ist zwar bei der Recherche TypeHinting begegnet, allerdings kann ich ja nur im Konstruktor TypeHinting vornehmen, so dass nur dort definiert ist, dass $erde eine Instanz der Klasse Erde ist.
PHP ist eine lose typisierte Sprache, und das ist auch gut so. Das Type-Hinting ist derzeit das Maximum an Möglichkeiten, das PHP von sich aus bietet. Wenn du mehr willst, steht es dir frei, an jeder Stelle eigene Typchecks einzuprogrammieren. Das wäre allerdings ziemlich übertrieben.
Kann ich irgendwie festlegen, von welchen Typ $this->erde ist?
Wenn es dir nur darum geht, dass NetBeans dir Autocompletion anbietet, solltest du dich mit PHPDOC-Kommentaren beschäftigen:
/**
* @var Erde
**/
public $erde;
Mit diesem Kommentar teilst du allen interessierten Systemen (nicht nur, aber auch, der Autocompletion von NetBeans) mit, welchen Objekttyp man in der Variablen üblicherweise erwartet.
Oder ist PHP in Sachen OOP und Typisierung doch noch nicht so weit?
PHP ist weit genug, um damit sehr sehr gut arbeiten zu können. Aber es hat halt keine strikte Typisierung, weshalb alle Taktiken der OOP-Programmierung anderer Sprachen hier nicht so angewendet werden können.
- Sven Rautenberg