PHP中的类中的类

时间:2010-06-17 14:32:48

标签: php oop

你能用PHP做到这一点吗?我听到了相互矛盾的意见:

类似的东西:

Class bar {
   function a_function () { echo "hi!"; }
}

Class foo {
   public $bar;
   function __construct() {
       $this->bar = new bar();
   }
}
$x = new foo();
$x->bar->a_function();

这会回应“嗨!”不是吗?

4 个答案:

答案 0 :(得分:3)

  

这会回应“嗨!”不是吗?

<强> 没有

更改此行:

$bar = new bar();

为:

$this->bar = new bar();

输出:

hi!

答案 1 :(得分:0)

是的,你可以。唯一的要求是(因为你在两个类之外调用它),在

$x->bar->a_function();

bar都是公共属性,a_function是公共属性。 a_function没有public修饰符,但由于您未指定访问修饰符,因此它是隐式的。

编辑:(你有错误,但是,请参阅其他答案)

答案 2 :(得分:0)

在类中,您需要使用$this->为所有成员变量添加前缀。所以你的foo类的构造函数应该是:

function __construct() {
    $this->bar = new bar();
}

然后它应该工作得很好......

答案 3 :(得分:0)

这很好,而且我不确定为什么有人会告诉你你不应该这样做和/或它无法完成。

您的示例无效,因为您将new Bar()分配给变量而不是属性。

$this->bar = new Bar();

相关问题