有一天,在开发我的 PHP 项目并实现 User
类时,我开始想知道这个类应该如何与项目正在使用的 MySQL 数据库交互。
让我从一个例子开始:假设我在 User
类中有一个 getName()
方法,它返回用户的真实姓名。实现该方法更合适的方法是什么?
我想出了两个解决方案:
我将数据库查询放在
getName()
中,并且只得到我需要的内容,如下所示:public function getName() { // MySQL query code here }
我在
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/