类成员的extract()

use*_*000 2 php arrays

有一个提取函数用于从数组生成局部变量:

extract(['a' => 10, 'b' => 20]) // $a = 10, $b = 20
Run Code Online (Sandbox Code Playgroud)

什么是干净的解决方案,如extract()功能,但对于班级成员?显然我可以做一些事情:

class User {
  private $user_id;
  private $password;
  private $email;

  public function __construct($params) {
    $this->user_id = isset($params['user_id']) ? $params['user_id'] : null;
    $this->password = isset($params['password']) ? $params['password'] : null;
    $this->email = isset($params['email']) ? $params['email'] : null;
  }
}
Run Code Online (Sandbox Code Playgroud)

有更清洁的方法吗?

Abr*_*ver 5

一个简单的解决方案,行为如下extract():

foreach($params as $key => $val) {
    $this->$key = $val;
}
Run Code Online (Sandbox Code Playgroud)