- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个先有鸡还是先有蛋的问题。我也想以面向对象的方式在 PHP 中实现一个系统,其中两个类将扮演重要角色:数据库和日志。我的想法是通过数据库类建立连接,该类将具有公共(public)方法,例如。 runQuery(sUpdateQuery), doInsert(sInsert) 等。 Log 类会像 logMessage(message), logDatabaseQuery(sQuery) 一样通过常用方法将日志写入数据库。问题来了。
1:在数据库类的方法中,我希望能够使用日志类的 logDatabaseQuery(sQuery)
2:如果我不想在 logDatabaseQuery 方法中使用 Database 类的 doInsert(sInsert) 方法,这仍然不是一个大挑战。
我想保持简单 - 只使用数据库连接对象的一个实例,如果可能的话,也使用记录器。
对于很多人来说,单例模型是第一个选择的想法,但我绝对想使用不同的解决方案。
所以会有两个类使用彼此的方法:
数据库 做插入 日志数据库查询
日志 日志数据库查询 做插入
我想单独保留 Log 方法(在 Log 类中),因为稍后它会有其他方法不仅可以记录到数据库,还可以记录到文件或电子邮件。
任何想法,这应该/可以如何以最好的、OOP 友好的方式完成?
我一直在想一个公共(public)的父抽象类,或者也考虑使用接口(interface),但最终还是想不出合适的方法:(
我想知道的是关于正确类层次结构的建议
最佳答案
你组合了太多的东西。
数据库不能真正依赖于依赖于数据库的记录器。这不是好的设计。
您真正拥有的是两种数据库访问权限。
低级访问执行“原始”SQL。
记录器可以依赖于这个较低级别的类。它本身并不包含原始 SQL。它依赖于一个较低级别的类。
高级访问执行应用程序查询,它使用低级访问和记录器。
关于php - OOP方式的蛋鸡问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/727647/
我是一名优秀的程序员,十分优秀!