为什么我们不能在类属性中使用“new”关键字?

时间:2012-02-18 10:52:16

标签: php

  

可能重复:
  Instance as a static class property

我遇到了一个关于在类中创建Object作为属性的问题。

include 'Bar.php';
class Foo()
{
    private $bar = new Bar();
}

它出现了一个解析错误。但是,当我把$ bar外部课程

include 'Bar.php';
class Foo()
{
    //private $bar = new Bar();
}
$bar = new Bar();

没有语法错误。工作得很好。所以有什么问题。我只是将我的Java知识移植到PHP。有时,它太混乱了。

2 个答案:

答案 0 :(得分:2)

你必须将它放入构造函数中:

class Foo() {
    private $bar;
    function __construct() {
        $this->bar = new Bar();
    }
}

答案 1 :(得分:0)

class Foo {
    private $bar;

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

    public function check() {
      return $this->bar->checkBack();
    }
}

class Bar {
  public function __construct() {
    print "good\n";
  }

  public function checkBack() {
    return "checked";
  }
}

$f = new Foo();
print $f->check();