在php中使用数组作为类属性

时间:2017-09-26 04:22:08

标签: php

我尝试创建一个具有如下属性的类:

class foo{

private $dbFields['test']=array("mobilePhone","address");
private $dbFields['test2']=array("mobilePhone","address",'colour');

}

但无效。

PHP解析错误:语法错误,意外' [',期待','或';'在

我必须这样做,结果相同;但对我来说编辑不太友好

class foo{

private $dbFields=array('test'=>array("mobilePhone","address"),'test2'=>array("mobilePhone","address",'colour'));

}

无论如何都要实现原始结构或类似的东西?

2 个答案:

答案 0 :(得分:5)

您可以使用以下class properties语法执行此操作:

<?php
class foo {
    private $dbFields = array(
        'test' => array("mobilePhone","address"),
        'test2' => array("mobilePhone","address","colour")
    );
}

如果值是动态的,而不是外观(如对数据库列的引用),那么您应该按照B.Desai的回答建议将值传递给类构造函数。

如果值永远不会改变,或许使用class constant会更好(PHP&gt; = 5.3.0)。

<?php
class foo {
    const dbFields = array(
        'test'  => array("mobilePhone","address"),
        'test2' => array("mobilePhone","address","colour")
    );
}

答案 1 :(得分:3)

始终在构造函数中初始化类成员。这样,您也可以将任何动态值分配给数据成员。

class foo{

private $dbFields;
function __construct()
{
  $this->dbFields['test']=array("mobilePhone","address");
  $this->dbFields['test2']=array("mobilePhone","address",'colour');
}
function getFields()
{
  return $this->dbFields;
}
}
$obj = new foo();
print_r($obj->getFields());