用户类 - “加载”数据


User class - 'load' data

<?php
class User {
    private $id;
    private $username;
    public function __construct($id = null) {
        $this->id = $id;
        if (!is_null($this->id)) {
            $this->load();
        }
    }
    public function load() {

    }
}
?>

在"加载"方法中,我将加载当前用户(id)的所有信息,但我想知道加载所有信息的最佳方法是什么。我可以获取所有数据,然后只分配所有私有变量,但我认为必须有另一种"更便宜"的方式来获取所有数据,以便我可以这样使用

$this>可变;

并且不必分配每个数据行,我在加载方法中选择。如何?

我假设如下:

  • 每个 User 对象代表数据库中的 1 行
  • 您可以在关联数组中检索用户的信息:

    $user = array('name' => 'John', 'age' => 20);

那么也许使用变量变量可能是您load()方法中的可行解决方案:

foreach($user as $key => $userData){
   $this->$$key = $userData; //Note the use of variables variable
}

你可以在 php 中像这样分配多个变量:

private function getUserData() {
  return array("42", "JohnDoe");
}
public function load() {
  list($this->id, $this->username) = getUserData();
}