在PHP类中使用另一个数组启动数组时出错

时间:2011-07-22 08:16:31

标签: php arrays class

我尝试使用php类中的另一个数组初始化一个数组。这是代码:

 <?php class test
{
    var $nodeDomain = array
        ("gd88" =>"10.10.104.88", "gd02" =>"10.10.104.2");
    var $node = array
        ("x86-mysql" =>$nodeDomain['gd88'],
         "x86-hbase" =>$nodeDomain['gd02']);

    function show ()
    {
        print_r($node);
    }
}
?>

我收到了这个错误: 解析错误:语法错误,第6行/root/workspace/php/array.php中的意外T_VARIABLE

但是当我在不使用类的情况下运行代码时,它可以正常工作。我的意思是我运行以下代码:

var $nodeDomain = array
    ("gd88" =>"10.10.104.88", "gd02" =>"10.10.104.2");
var $node = array
    ("x86-mysql" =>$nodeDomain['gd88'],
     "x86-hbase" =>$nodeDomain['gd02']); 

我不太清楚php类和php脚本的区别。谁能解释一下呢?

感谢。

3 个答案:

答案 0 :(得分:2)

声明类成员时,不能使用其他变量。尝试在构造函数中初始化它们。

<?php class test
{
    var $nodeDomain;
    var $node;

    public function __construct() {
       $this->nodeDomain = array("gd88" =>"10.10.104.88", "gd02" =>"10.10.104.2"); 
       $this->node = array("x86-mysql" =>$this->nodeDomain['gd88'],
         "x86-hbase" =>$this->nodeDomain['gd02']);
    }
    function show ()
    {
        print_r($node);
    }
}
?>

答案 1 :(得分:0)

尝试将那些array-initialazing放到测试类的constructor

答案 2 :(得分:0)

您无法在字段声明中引用变量。这个变量应该从哪里来?没有局部变量,也没有办法定位全局语句。 (当然超级全球可以工作,但显然没有实施;-))相反,你可以做这样的事情:

<?php class test
{
    var $nodeDomain = array
        ("gd88" =>"10.10.104.88", "gd02" =>"10.10.104.2");
    var $node;

    function __construct()
    {
      $this->node = array
        ("x86-mysql" =>$nodeDomain['gd88'],
         "x86-hbase" =>$nodeDomain['gd02']);
    }
    function show ()
    {
        print_r($node);
    }
}
?>

请注意$ nodeDomain必须以某种方式位于构造函数的范围内。要么是全局变量,要么在赋值之前需要global $nodeDomain语句,或者可以将$ nodeDomain作为构造函数参数传递。