使用对象创建关联数组

时间:2014-08-29 15:22:23

标签: php arrays oop

我正在尝试创建一个将参数带入其构造函数的对象,然后返回一个关联数组。例如:

class RefArray {
    public $ref_id,$title,$pub_date,$doi,$author_name;

    public function __construct($ref_id, $title, $pub_date, $doi, $author_name){

        $this = array('ref_id'=>$this->ref_id, 'title'=>$this->title, 
         'pub_date'=>$this->pub_date, 'doi'=> $this->doi, 
         'author_name'=>$this->author_name);
    }
}

但是,上面的代码会出现此错误: 致命错误:无法重新分配$ this

我这样做的原因是为了解决PHP中无法使用多个构造函数的限制(引用类在其构造函数中使用了一个数组)。

class Reference {
    private $ref_id, $title, $pub_date, $doi, $external_ref_id, $author_name;

    public function __construct($refArray){
        $this->setRefId($refArray["ref_id"]);
        $this->setTitle($refArray["title"]);
        $this->setPubDate($refArray["pub_date"]);
        if(array_key_exists('doi', $refArray)){
            $this->setDoi($refArray["doi"]);
        }
        $this->setExtRef();
        if(array_key_exists('author_name', $refArray)){
            $this->setAuthor($refArray["author_name"]);
        }
    }

所以我的问题首先是是否有一个类来创建一个关联数组的想法是一个好的。其次,如果它是如何使它工作?

1 个答案:

答案 0 :(得分:1)

不,这不是个好主意。如果你需要一个对象作为数组,你可以对它进行类型转换:

$arr = (array) $obj;

请参阅https://stackoverflow.com/a/4345609/413531

多个构造函数的问题是旧问题;)

请参阅Best way to do multiple constructors in PHP了解一些可行的解决方案。