【发布时间】:2014-10-30 12:58:11
【问题描述】:
所以我有一个用于缓存系统的类、一个用于数据库连接的类、一组应用程序设置、一个用于处理不同语言的类等。我创建的大多数其他类都需要这些类
有没有比这样做更好的方法来处理它:
function __construct($database,$cache,$appsettings,$language,...) {
在我的每一节课上?这种方法的另一个问题是,如果函数需要数据库连接,我无法将它们设为静态。例如,我有一个用户类,它现在有一个“getUsernameFromID()”函数,它使用数据库来获取该用户名。如果我使用上述方法,我将不得不实际创建一个用户类,每次某些代码需要来自 ID 的用户名。
单例类可以解决这个问题,但这里的其他答案说它们在 PHP 中是一种不好的做法。现在我正在为这些类使用全局变量,这显然也是一个糟糕的解决方案。我该怎么办?
我希望这已经足够清楚了,我正在尽力而为。
【问题讨论】:
-
您可以创建一个
ApplicationState类,其中包含当前应用程序的状态,并具有缓存、数据库等对象。然后您只需将ApplicationState实例注入你的类,如果你需要数据库,你可以从状态中提取它:state.getDatabase(); -
完全取决于您现有的架构。如果您正在为失去静态功能而感到遗憾,那么您的架构很可能设计得不好。如果你坚持现有的东西,单例包装器似乎是最好的选择。如果没有,看看其他流行的现代 mvc 框架如何处理这个
-
我刚开始在 PHP 中使用 OOP,所以我没有太多经验。我可以看看哪些流行的 MVC?