php - 我如何在 PHP 中组织类并从类中访问数据库

标签 php database oop class filestructure

我从事程序化 PHP 编程已有大约 8 年,终于开始学习 OOPHP。我已经阅读了很多教程,我理解语法并且使用它感觉很舒服。不过,我未能找到有关如何设置类文件结构以及如何从类内部访问我的数据库以在其中执行查询的实际示例。

我最初的想法是创建一个名为/class 的单独文件夹,并为每个类(class)制作一个文件。如果一个类扩展了另一个类,我将 include() 子文件中的父文件。在我的主要脚本中,我会根据需要调用类。例如 include(/class/member.php) 当我需要他们的成员类时。

另外,我写了一个扩展 mysqli 的数据库类(我知道你们中的许多人会建议我改用 PDO,如果你有一些理由可以随意提供它们,尽管我会说我不希望永远不使用 MySQL)。真正让我震惊的部分是如何在我的类(class)中打开数据库连接。例如,我的想法是在成员类中我会传递一个member_id,然后我会在类中执行查询以将其所有属性设置为成员的属性。最初我将数据库类包含在我的主脚本中并创建了它的一个实例,然后在我的成员类中将句柄声明为全局(我已经阅读了全局变量是如何邪恶的,但我真的不喜欢那个解决方案)。执行此操作的更好方法是什么?

感谢您的帮助!

最佳答案

首先,您肯定是在正确的轨道上,每个类都有单独的文件。在这一点上,这几乎被认为是标准做法。我会调查 class autoloadingspl_autoload_register .我强烈建议首先设置一个自动加载器,相信我,当我说你真的不想在包含你的类文件之前进行无数次 interface_existsclass_exists 调用时.

其次,关于你的数据库调用。我 answered a similar question here但基本要点是您创建一个数据库实例并将其注入(inject)到需要数据库访问的类中。就 mysqli 而言,如果您喜欢使用它,那就去做吧。太棒了,您没有使用旧的、已弃用的 mysql_*

关于php - 我如何在 PHP 中组织类并从类中访问数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8830564/

相关文章:

php - 从多个表中按计数排序的最佳方法是什么?

php - 使用 phpunit 测试命令 symfony

sql - 为什么 Postgres 告诉我当两个表都在同一数据库上时跨数据库引用不可用?

PHP OOP - getter setter 是否用于防止更改属性值?

java - 信息隐藏和封装有什么区别?

oop - 裸机上的面向对象语言

php - PubNub 推送通知

php - 如何将自定义行为添加到 symfony 缓存 :clear?

php - PostgreSQL 安装错误 "unable to write inside temp environment variable path"

c# - 为什么我在 C# 类中收到此错误?