Je me demande s'il est possible d'encapsuler les méthodes d'une classe, mais de les exposer ensuite dans une classe consommatrice. Par exemple (JFTR, je sais que ce code est erroné)Méthodes d'encapsulation et d'héritage
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
En fin de compte, je veux être en mesure de fabriquer des composants qui ne peuvent être référencés directement en dehors du contexte d'une seule classe de contrôle.
Vous voulez dire quelque chose comme une classe d'amis en C++? http://en.wikipedia.org/wiki/Friend_class – VolkerK
Vous ne pouvez pas l'avoir dans les deux sens, si vous cachez des fonctionnalités dans la méthode privée, alors il ne peut pas être appelé de l'extérieur. Si vous l'exposer de quelque façon que ce soit (en faisant une méthode publique, qui à son tour appelle la méthode privée), tout le monde peut invoquer votre méthode privée. –
Le commentaire ci-dessus est sur PHP bien sûr :) la classe d'amis fonctionnerait, mais il n'y a pas un tel concept en PHP. –