你能用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();
这会回应“嗨!”不是吗?
答案 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();