是将类的对象属性和数据存储映射起来,一个对象的操作会映射为对数据存储的操作,如new一个对象,对应的数据就会映射到这个对象上,对对象属性修改后,就会保存到数据库中。
接下来我们实现一个简单的ORM的demo:
class User{
public $id;
public $age;
public $name;
protected $db;
public function __construct($id)
{
$this->db = new \IMooc\Database\MySQLi();
$this->db->connect('localhost','root','root','test');
$res = $this->db->query("select * from user where id = {$id}");
$data = $res->fetch_assoc();
$this->id = $data['id'];
$this->age = $data['age'];
$this->name = $data['name'];
}
function __destruct()
{
$res = "update user set name = '{$this->name}' ,age = {$this->age} where id = {$this->id}";
$res = $this->db->query($res);
}
}
声明一个User类,然后有三个属性。我们在他的构造函数中传递$id(数据库的主键Id),然后查询指定的数据库数据,再赋值给类的属性,析构函数我们将类现在的属性更新到数据表中。
$user =new User(1)
$user->age = 112;
$user->name='hank';
当我们new这个类并且传递Id的时候,该对象就映射了指定的数据。我们修改指定的属性值,请求结束类自动销毁的时候,构析函数自动运行,将现在的参数更新到指定的字段。
网友评论