如何在PHP中组织类并从类内访问数据库



我已经为过程PHP编程了大约8年,终于开始学习OOPHP了。我看过很多教程,我理解语法,使用起来也很舒服。不过,我没有找到一个如何设置类文件结构的实用示例,以及如何从类中访问数据库以在其中执行查询。

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

此外,我还编写了一个扩展mysqli的数据库类(我知道你们中的许多人会建议我使用PDO,如果你有一些理由可以提供它们,尽管我会说我不希望永远不使用MySQL)。真正让我头疼的是如何打开类中的数据库连接。例如,我的想法是,在成员类中,我将传递一个member_id,然后在类中执行一个查询,将其所有属性设置为成员的属性。最初,我在主脚本中包含了数据库类,并创建了它的一个实例,然后在成员类中将句柄声明为global(我读过global是如何邪恶的,无论如何我都不喜欢这个解决方案)。有什么更好的方法?

谢谢你的帮助!

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

第二,关于数据库调用。我在这里回答了一个类似的问题,但基本要点是创建一个数据库实例,并将其注入需要访问数据库的类中。至于mysqli,如果这是你喜欢使用的,那就去吧。你没有使用旧的、不推荐使用的mysql_*,这太棒了。

在我看来,学习OOP的最好方法是查看OOP之后已经存在的代码库。我建议查看Zend Framework API文档。如果它看起来对你有希望,下载该框架并开始练习

Zend Framework最酷的地方是,它可以用作自顶向下的MVC或独立库,并且在PHP社区中大量使用。

一些需要关注的事项:

  • 类自动加载
  • 类名如何与其各自的目录结构对齐
  • 如何扩展类
  • 接口
  • 抽象类

相关内容

  • 没有找到相关文章

最新更新