我想在一个类的多个方法中使用我创建的数据库单例。在每个方法中单独实例化 Singleton 更合适,还是通过 __constructor() 实例化它并从每个方法中的变量访问它更合适?
谢谢。
最佳答案
考虑到它是一个单例,结果将是相同的:您的 DB 对象将只有一个实例,并且它始终是相同的。
因此,这两种解决方案都有效,并且产生相同的结果;至少,如果每次创建您的类的实例时都使用您的数据库类——当然,性能差异可能可以忽略不计。
不过,采用在构造函数中获取单例实例并在其他方法中使用类变量的解决方案有一个优点:您的方法将不依赖于此单例,而仅依赖于类变量...
... 这意味着 Dependency Injection会容易得多(你只需要修改你的__construct
方法,而不是类的每个方法)如果你想有一天使用它——例如, 以“模拟”您的数据库类,以进行自动化测试。
有关更多信息,您可以查看此博客文章:What is Dependency Injection?
关于php - 在 PHP 中使用单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1829405/