我对OOP(以及PHP编程)很陌生,并且在使用对象并将它们与db数据(在我的情况下为MySql,但这无关紧要)连接时遇到了一些麻烦。

我在数据库上有一个表 USERS 。我在 PHP 代码中声明了一个 class User,带有我需要的各种属性和方法。问题是将这个东西连接到数据库。
我在构造函数中放置了从数据库中检索数据的代码,因此当我需要处理特定用户时,我只需编写 $user = new User($user_id); 并开始使用该对象。
完成后,我在对象上调用一个方法以将数据保存在 db 上,这非常有效。

当我在单个页面 中需要有关 多个用户的数据时,就会出现问题,如显示完整的用户列表。使用这种方法,当我需要用户列表时,我必须实例化所有对象,这会导致代码使 的查询过多 SELECT * FROM users WHERE user_id = ... 类型的 ,而不是像 SELECT Only_needed_fields FROM users WHERE 1 LIMIT 20 这样的单个查询在程序代码中完成。

哪个是解决此类问题的正确 OOP 方法?哪个是在构造函数中检索数据的良好实践替代方法?

注意 请不要建议使用任何类型的框架 - 我想在使用抽象层之前学习纯 OOP PHP -

最佳答案

您的问题是您没有将应用程序的层分开。您应该做的是让工厂类实例化处理数据库调用的用户,并让用户类只处理业务逻辑。这也将有助于代码的可测试性。

您的工厂类可以有两种方法。一个用于加载单个用户并实例化它,另一个用于加载一组用户。

关于PHP OOP : retrieve data from database,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6807266/

10-13 02:05