在PHP中为属性分配多个参数

时间:2012-12-28 04:13:53

标签: php class constructor

我有类似的类定义:

class User{
    public $first;
    public $last;
    public $email;
    public $guid;
    public $website;
    public $bio;
    public $picture;
    public $gender;
    ...
}

和一个构造函数,它从工厂函数获取值并将它们放在类中,如下所示:

public function __construct($guid, $first , $last,$email, $bio, $picture, $gender) {
    $this->guid = $guid;
    $this->first = $first;
    $this->last = $last;
    $this->email = $email;
            ...
}

是否有一个简单的方法可以自动分配所有这些变量? 或者我可以使用带有PHP参数函数的for来循环遍历它们吗?

3 个答案:

答案 0 :(得分:0)

在这种情况下,这应该更简单:

class User{

    public function __construct($params) {//params is array('first' => 'hello', 'last' => 'hi', 'email'=>'hellohi@hi.com')
        foreach ($params as $key => $value)
        {
            $this->$key = $value;
        }
    }
}

然后,您可以访问属性:

$params = array('first' => 'hello', 'last' => 'hi', 'email'=>'hellohi@hi.com');
$user = new User($params);
echo $user->first;

答案 1 :(得分:0)

<?php

class User {

    public $first;
    public $last;
    public $email;
    public $guid;
    public $website;
    public $bio;
    public $picture;
    public $gender;


    public function __construct($params) { // Same params array from previous answer.

        foreach ($params as $key => $value) {

            $this->$key = $value;
        }

    }
}

?>

答案 2 :(得分:0)

按照Simon Germain的建议使用func_get_args并使用list函数:

<?php 

class Test{

    var $x, $y, $z;

    function __construct($x, $y, $z){
         list($this->x, $this->y, $this->z) = func_get_args();
    }
 }

我不相信它可以用更短的方式完成。