繁体   English   中英

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

[英]How do I organize classes in PHP and access database from within class

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

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

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

谢谢你的帮助!

我认为,学习OOP的最好方法是查看遵循OOP的现有代码库。 我建议检查一下Zend Framework API Docs 如果您觉得它很有希望,请下载该框架并开始使用它。

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

需要注意的一些事情:

  • 类自动加载
  • 类名如何与其各自的目录结构对齐
  • 如何扩展课程
  • 介面
  • 抽象类

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

其次,关于您的数据库调用。 在这里回答了类似的问题,但基本要点是创建一个数据库实例并将其注入需要数据库访问的类中。 至于mysqli ,如果那是您喜欢使用的功能。 非常棒,您没有使用旧的,已弃用的mysql_*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM