3

我已经看到十几个主题和问题都在说明在 PHP 中使用 ORM(30 个 php 初学者最佳实践以及为什么在 php 中使用 orm

所以我想知道,如何在 PHP 中使用 ORM。特别是OOPHP。

假设我们有一个类 User 并且我们正在注册一个。(我正在使用 RedBean)

<?php
class User {
    private $username;
    private $password;

    public function registerUser($username, $password) {
        require $root . "classes/Helper.php";
        $helper = new Helper();
        $salt = sha1($helper->generateSalt());

        $this->username = $username;
        $this->password = sha1($password + $salt);
        $this->salt = $salt;
        $this->store();
    }
    private function store() {
        $user = R::dispense(__CLASS__);
        $user->username = $this->username;
        $user->password = $this->password;
    }
}
?>

这行得通。每次用户注册时,我都会存储它。还是将store()函数放在更好的__construct() 方法中?或者有更好的方法吗?它有用__CLASS__还是我应该更好地使用'User'

private function load($username){
    $user = R::find(__CLASS__, 'username=?', array($username));
    $this->username = $user->username;
    $this->password = $user->password;
    $this->salt = $user->salt;
    $this->email = $user->email;
}

现在,如果我想加载一个用户,我可以在我的页面中创建一个新的用户对象并调用load()以用所需的用户填充它。或者我应该直接使用$userbean = R::find('User', 'username=?', array($username));并将它放在一个$user = new User();

我对可以完成几件事的方式感到有些困惑。这实际上是与面向对象的 PHP 一起使用的吗?

[编辑:] 那么,我使用 RedBean 和 OOPHP 的方法是这样吗?

4

1 回答 1

0

这取决于您的 ORM,一般来说,您有一个关于 ORM 入门的常见问题解答。对于 DOCTRINE 2 ORM,您可以阅读此页面,对于 PROPEL ORM ,您可以阅读此页面,对于redbean,您可以阅读页面

对不起,我不知道 redbean,但是,对于其他 ORM,它可能很有用(我使用 Doctrine2),我们可以在那里与 OOPHP 一起使用。开始安装 ORM 后,当我们“调用”你的数据库中链接的 ORM 时接收 Object 更方便执行 SQL 请求并对每个请求进行处理...

对于用户不能像 SQL 或数据库,更方便,因为 ORM 负责优化请求......

于 2012-08-23T07:51:13.763 回答