【问题标题】:How do I organize classes in PHP and access database from within class如何在 PHP 中组织类并从类中访问数据库
【发布时间】:2012-01-12 05:32:19
【问题描述】:

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

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

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

感谢您的帮助!

【问题讨论】:

    标签: php database oop class filestructure


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      在我看来,学习 OOP 的最佳方式是查看遵循 OOP 的现有代码库。我建议查看 Zend Framework API Docs。如果您觉得它很有希望,请下载 framework 并开始练习。

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

      需要关注的一些事情:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-05
        • 1970-01-01
        • 2020-08-07
        • 2018-08-24
        • 2011-05-12
        • 1970-01-01
        相关资源
        最近更新 更多