我只是面向对象编程的一个大工具,目前正在学习面向对象的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;
}
}
有人可以帮我理解我在这里做错了什么吗? 提前谢谢。
答案 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>";
}
}
当然,有十几种方法可以做到,但我建议你不要在开头定义变量。