其实我想改变当前主题的颜色......这是我的CSS代码:
.active{
color: red;
border-left: 1px solid red;
}
这也是我的PHP课程:
class Languages
{
public $active;
public $data = '<div class="menu">
<ul>
<li $active["en"]>English</li>
<li $active["fr"]>French</li>
</ul>
</div>';
function English()
{
// other codes
$this->active["en"] = 'active';
return $active;
}
function French()
{
// other codes
$this->active["fr"] = 'active';
return $active;
}
}
但上面的代码不起作用,为什么?!我该如何解决?
答案 0 :(得分:2)
你在做什么是不正确的。您的代码没有将变量值添加到字符串中,而是将代码视为文本。
public $data = '<div class="menu">
<ul>
<li ' . $this->$active["en"] .'>English</li>
<li ' . $this->$active["fr"] .'>French</li>
</ul>
</div>';
修改1
您也缺少ID或类属性。
修改2
正如在对此答案的评论中所述,由于变量尚未初始化,您会收到错误,请在{{1}中设置活动变量后将文本添加到$data
方法。
编辑3
试试这个,
__construct
答案 1 :(得分:1)
您的代码存在一些问题。首先,使用单引号('
)指示PHP不插值。其次,我怀疑data
值永远不会更新,因为$active
中的值会发生变化。此外,您应该使用class =“active”而不是简单地将“active”添加到li
元素中。更有效的解决方案可能类似于以下
class Languages
{
public $active;
function English()
{
// other codes
$this->active["en"] = 'active';
return $active;
}
function French()
{
// other codes
$this->active["fr"] = 'active';
return $active;
}
function data()
{
return = '<div class="menu">
<ul>
<li class="' . $this->active["en"] . '">English</li>
<li class="' . $this->active["fr"] . '">French</li>
</ul>
</div>';
}
}
然后,您可以通过调用$object->data()
方法访问生成的html,生成的HTML将始终反映$active
中的当前值。或者,您仍然可以将$data
存储为成员变量,并且只需要一个函数可以使用function updateData()
等新值重新生成它。