【发布时间】:2010-11-20 21:23:16
【问题描述】:
我想知道是否可以封装一个类的方法,然后在消费类中公开它们。例如(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++ 中的朋友类? en.wikipedia.org/wiki/Friend_class
-
你不能同时拥有它,如果你将功能隐藏在私有方法中,那么它不能从外部调用。如果你以任何方式公开它(通过创建一个公共方法,然后调用私有方法),那么每个人都可以调用你的私有方法。
-
上面的评论当然是关于 PHP 的 :) 朋友类可以工作,但 PHP 中没有这样的概念。
-
对不起,我应该把 PHP 放在标题中。 @Anti Veeranna,是否有另一种方法可以实现我的建议?其他无法访问的类的单点访问?
标签: php oop inheritance visibility encapsulation