Ich frage mich, ob es möglich ist, die Methoden einer Klasse zu kapseln, aber dann in einer verbrauchenden Klasse verfügbar machen. Zum Beispiel (JFTR, ich weiß, dieser Code falsch ist)Encapsulating und vererben Methoden
class Consumer{
public function __construct($obj){
$this->obj = $obj;
}
public function doCommand(){
$this->obj->command();
}
}
class Consumed{
//I would make the constructor private, but to save space...
public function __construct(){}
private function command(){
echo "Executing command in the context of the Consumer";
}
}
$consumer = new Consumer(new Consumed);
$consumer->doCommand();
//just to reiterate, I know this throws an error
Letztlich möchte ich Komponenten in der Lage sein zu machen, die nicht direkt vor dem Kontext einer einzelnen Controlling-Klasse verwiesen werden kann.
Sie meinen etwas wie eine Freundesklasse in C++? http://en.wikipedia.org/wiki/Friend_class – VolkerK
Sie können nicht beide Möglichkeiten haben, wenn Sie Funktionalität innerhalb der privaten Methode verstecken, dann kann es nicht von außen aufgerufen werden. Wenn Sie es in irgendeiner Weise verfügbar machen (indem Sie eine öffentliche Methode erstellen, die wiederum die private Methode aufruft), kann jeder Ihre private Methode aufrufen. –
Der obige Kommentar ist natürlich über PHP :) Freund Klasse würde funktionieren, aber es gibt kein solches Konzept in PHP. –