php - PHP 类应该如何与 MySQL 数据库交互?

标签 php mysql

有一天,在开发我的 PHP 项目并实现 User 类时,我开始想知道这个类应该如何与项目正在使用的 MySQL 数据库交互。

让我从一个例子开始:假设我在 User 类中有一个 getName() 方法,它返回用户的真实姓名。实现该方法更合适的方法是什么?

我想出了两个解决方案:

  1. 我将数据库查询放在 getName() 中,并且只得到我需要的内容,如下所示:

    public function getName() {
    
        // MySQL query code here
    }
    
  2. 我在 User 类中创建一个 load() 方法,该方法加载类结构中的所有用户数据,然后创建 getName() 是这样的:

    private $name;
    
    // Load all user data inside the class' structure
    public function load() {
    
        $this->name = // MySQL query here
    }
    
    public function getName() {
    
        return $this->name;
    }
    

我认为,不确定是否错误,第一种方法更有效,因为我只获取我需要的数据,而第二种方法更面向对象,但效率较低。

那么,问题来了:什么是更好的方法?为什么?还有更好的方法吗?

最佳答案

无论哪种方式,请考虑存储/缓存其结果,这样您就不会每次在该对象上使用 getName 时都进行查询。 另外,请考虑不要使用 ORM/DBAL 解决方案(如 propel or doctrine)来担心所有这些问题。 .

另请查看延迟加载和 Active Record Pattern

关于php - PHP 类应该如何与 MySQL 数据库交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22832742/

相关文章:

PHP Cookie 管理

php - 在 Cakephp 2.x 的 Auth 组件中使用 Md5 作为密码哈希

php - MySQL -> Php -> HTML 中的字符问题

mysql - 尝试将年份与大学生联系起来

php - 如何将mysql查询输出到html表?

php - 如何获取动态添加的 html 按钮上的事件

php - 如何在mysql中获取多条记录并将其存储到json数组中

php - 将mysql数据库导出到excel

mysql - Doctrine 可以自己加入吗

mysql - 这个 MySQL 语法有什么问题?