在oop php中的var inside var

时间:2014-01-31 18:55:18

标签: php oop

我只是面向对象编程的一个大工具,目前正在学习面向对象的php,我对在类中的变量中包含变量感到有点困惑,通常我会做类似的事情:

$div_content="some content";
$div = '<div>'.$div_content.'</div>';

但是当尝试这样做时,我收到一个错误:

class SomeClass{

private $div_content ="some content";
public $div='<div>'.$div_content.'</div>';

function __construct(){

echo $this->div;

}

}

有人可以帮我理解我在这里做错了什么吗? 提前谢谢。

4 个答案:

答案 0 :(得分:3)

 function __construct(){
  $this->div = '<div>'.$this->div_content.'</div>';
  echo $this->div;
 }

您只能在声明上定义静态值,对它使用__construct()

答案 1 :(得分:1)

在类上定义属性时,您只能使用特定值。无法进行任何计算或操作。例如,您不能拥有public $five = 2+3;,它将无效。

相反,您可以在函数的构造函数中定义这些属性。

答案 2 :(得分:1)

你应该研究getter和setter方法。你只想得到一些东西,所以使用$div的getter方法,称为getDiv

class SomeClass{
  private $div_content = "some content";

  public function getDiv() {
    return '<div>'.$this->div_content.'</div>';
  }

  function __construct(){
    echo $this->getDiv();
  }
}

答案 3 :(得分:1)

变量在类中的处理方式略有不同 - 如果它起作用,像你或maja的构造 - 必然会导致 - “问题”

尝试这样的事情,而不是:

class SomeClass{ 

private $div_content; 
public $div; 

function __construct($content){ 

$this->div_content = $content; 
$this->makeDiv(); 

}

function makeDiv(){

echo "<div>".$this->div_content."</div>"; 

}
} 

当然,有十几种方法可以做到,但我建议你不要在开头定义变量。