1

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

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

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

谢谢你的帮助!

4

2 回答 2

5

在我看来,学习 OOP 的最佳方式是查看遵循 OOP 的现有代码库。我建议查看 Zend Framework API Docs。如果它看起来对您很有希望,请下载该框架并开始使用它进行练习。

Zend Framework 很酷的地方在于它可以用作自上而下的 MVC 或独立库,并且在 PHP 社区中被大量使用。

一些需要集中精力的事情:

  • 类自动加载
  • 类名如何与它们各自的目录结构对齐
  • 课程如何扩展
  • 接口
  • 抽象类
于 2012-01-12T05:46:34.713 回答
5

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

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

于 2012-01-12T05:51:14.350 回答