gpt4 book ai didi

php - OOP方式的蛋鸡问题

转载 作者:行者123 更新时间:2023-12-05 08:19:24 25 4
gpt4 key购买 nike

我有一个先有鸡还是先有蛋的问题。我也想以面向对象的方式在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com