我有类似的类定义:
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来循环遍历它们吗?
答案 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();
}
}
我不相信它可以用更短的方式完成。