所以我有一个用于缓存系统的类,一个用于数据库连接的类,一个应用程序设置数组,一个用于处理不同语言的类等。这些类在我创建的大多数其他类中都是需要的
有没有更好的方法来处理它而不是这样做:
function __construct($database,$cache,$appsettings,$language,...) {
我每节课都有?这种方法的另一个问题是,如果需要数据库连接,我就无法使函数成为静态函数。因此,例如,我有一个用户类,现在有一个“getUsernameFromID()”函数,它使用数据库来获取该用户名。如果我使用上面的方法,每次有些代码需要ID的用户名时,我必须实际创建一个用户类。
Singleton类可以解决这个问题,但是这里的其他答案都说它们在PHP中是一种不好的做法。现在我正在为这些类使用全局变量,这显然也是一个糟糕的解决方案。我该怎么办?
我希望这很清楚,我正在尽力而为。
答案 0 :(得分:1)
您可能希望了解依赖注入和服务定位器设计模式。 Pimple是一个流行的依赖注入管理器。
单身人士不一定是坏习惯。很多时候我们只是使用它们很糟糕。例如,一个管理它自己"单一"可以被认为是一种反模式。它创建了对自身的依赖并在全局范围内强制执行(在它自己的范围之外)。最好由框架或其他可以在范围内强制执行它的对象来管理单一事务。