我想知道是否可以封裝一個類的方法,但是然後暴露它們在一個消費類。例如(JFTR,我知道這個代碼是錯誤的)封裝和繼承方法
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
最後,我希望能夠做的是不能在一個控制類的上下文外部直接引用的組件。
你的意思是像C++中的朋友類的東西? http://en.wikipedia.org/wiki/Friend_class – VolkerK 2009-08-19 09:38:05
如果你隱藏了私有方法中的功能,那麼你不能雙方都擁有它,那麼它就不能從外部調用。 如果以任何方式公開它(通過製作一個公共方法,然後調用私有方法),那麼每個人都可以調用您的私有方法。 – 2009-08-19 09:40:13
上面的評論是關於PHP當然:)朋友類會工作,但PHP中沒有這樣的概念。 – 2009-08-19 09:44:57