moin,
- gegeben sind n konkrete Child-Class(es) mit der Benennung ConcreteConstruct die nur einer
__construkt()
-Methode enthält. - in der
__construct()
-Methode der ConcreteConstruct-Klasse können weitere ConcreteConstruct-Klassen per ConstructorInjection als Parameter enthalten sein. - Jeder Construct-Klasse ist Child-Class von Parent-Class AbstractConstruct.
class ConcreteConstruct extends AbstractConstruct {
public function __construct ( ConstructInterface $construct ) {
// ...
}
}
- Die
__construct
-Parameter werden in der Initialisierung der ConcreteConstructor-Klasse verarbeitet. - Jede Construct-Klasse befüllen, nach der Verarbeitung, über die protected Methode, private Instance-Property Arrays der AbstractConstruct-Klasse.
- Ist eine ConcreteConstruct-Klasse ein Initialisierungsparameter von einer weitere ConcreteConstruct-Klasse, so nimmt der ConcreteConstruct-Klasse als Parameter, seine schon befülten Instance-Property Arrays von der AbstractConstruct-Klasse und übergibt sie der ConcreteConstruct-Klasse in seiner
__construct
-Methode vor der Weiterverarbeitung.
$this->_receiveArray ( $construct->sendArray ( ) );
- Die Weiterverarbeitung soll eine Helper-Klasse erledigen, da die Verarbeitung der ConcreteConstruct gleich oder ähnliche ist und man es gut auslagern kann.
Wenn ich die Helper Klasse in einer der Beiden Klassen - ConcreteConstruct oder AbstractConstruct - implementiere, kann ich die Daten des ConcreteConstruct schon weiterverarbeiten, aber nicht als Daten zur AbstractConstruct-Klasse zurückgeben, sie verstauen und als ConstructInjection weiter an den nächsten fremeden ConcreteConstruct reichen.
deswegen habe ich das mit Traits gelöst.
Ich habe Überlegt ob man die Daten die die Helper-Klasse annimmt, nicht in eine extra Klasse Data schreiben könnte die die Klasse AbstractConstruct als Instance Property hätte. So könnte man die weiterverarbeiteten Parameter der Helper-Klasse, in der Data-Klasse verstauen, gekapselt und isoliert weitergeben an die AbstractConstruct.
abstractclass AbstractConstruct {
public function sendData ( ) : Data
{
return $this->_help->getData ( );
}
}
class Helper {
private $_data;
private function _addData ( ) : void { /* ... */ }
public function getData ( ) : Data
{
return $this->data;
}
}
lgmb
--
Sprachstörung
Sprachstörung