A类的对象不能直接创建,只能由B类创建

时间:2011-05-01 13:49:44

标签: php

class A
{
    public function foo()
    {
    }
}

class B
{
    $a = new A;
    public function go()
    {
    }
}

我想要一个对象不能直接创建。但只能由B类创建。 我怎么能这样做。

3 个答案:

答案 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。我认为这将是你要求的。在那里,我们将有一个单独的工厂类来管理对象创建。