2015-10-06 30 views
-6
传递数组财产

其实我想改变当前主题的颜色......这是我的CSS代码:如何从方法使用PHP

.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

'$ active [“en”]'实际上是一个字符串。使用占位符,然后用相应的值替换它们。 – Rizier123

回答

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将始终反映在$active当前值访问生成的HTML。或者,您仍然可以将$data作为成员变量存储,并且只需使用新值(例如function updateData())重新生成它即可。

+1

你忘了更改'$ active [“en”]''类属性:) – Rizier123

+0

感谢您的接收,哈哈!我改进了我的答案。 – CollinD

+2

@Sajad他在做什么错?不胜感激他帮助别人修复他们的解决方案,反过来帮助你。 – Script47

2

你在做什么是不正确的。你的代码没有将变量值添加到字符串中,而是将代码视为文本。

public $data = '<div class="menu"> 
        <ul> 
         <li ' . $this->$active["en"] .'>English</li> 
         <li ' . $this->$active["fr"] .'>French</li> 
        </ul> 
       </div>'; 

编辑1

您还缺少ID或类属性。

编辑2

正如这个答案的评论称,你会得到错误的变量尚未初始化,将文本添加到您$data设置在__construct方法的主动变后。

编辑3

试试这个,

<?php 
    class Languages 
    { 
     public $active = []; 
     public $data; 

     function __construct() { 
      /** This will run first before anything else. **/ 

      $this->active["someKey"] = "someValue"; 
      $this->data = '<div class="menu"> 
          <ul> 
           <li class=' . $this->$active["en"] . '>English</li> 
           <li class=' . $this->$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

点1仍然存在。您使用局部变量而不是类属性。那也不会被定义。 – Rizier123

+0

@ Rizier123我刚刚看到你的意思。谢谢您的帮助。更新。 – Script47

+0

谢谢,+1对你有帮助。 – Shafizadeh