1

我有一个这样的类定义:

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 遍历它们吗?

4

3 回答 3

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;
于 2012-12-28T04:21:38.210 回答
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;
        }

    }
}

?>
于 2012-12-28T04:23:55.287 回答
0

按照 Simon Germain 的建议使用 func_get_args 并使用您得到的列表函数:

<?php 

class Test{

    var $x, $y, $z;

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

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

于 2017-05-09T09:47:23.557 回答