class A
{
public function foo()
{
}
}
class B
{
$a = new A;
public function go()
{
}
}
我想要一个对象不能直接创建。但只能由B类创建。 我怎么能这样做。
答案 0 :(得分:2)
你为什么需要那个?
记住 - 一个类是对象的事实工厂,而对象应该做的事情,它应该使用传递的参数和可用的实例变量来执行它们,这意味着你应该传递对象需要的所有内容构造函数,你不应该关心每个人都可以创建对象的事实。
严重。
答案 1 :(得分:0)
听起来你想扩展一个抽象类。
abstract class A {
protected function foo() {
echo "Hello world!";
}
}
class B extends A {
public function go() {
$this->foo();
}
}
$obj = new B;
$obj->foo(); // error - cannot call a protected method directly
$obj->go(); // echo's "Hello world!"
答案 2 :(得分:0)
如果您真的想这样做,请检查factory design pattern。我认为这将是你要求的。在那里,我们将有一个单独的工厂类来管理对象创建。