所以,这就是交易。我设法在不使用全局变量或静态类/函数的情况下制作了一个框架。
我正在使用一种使用工厂的依赖注入形式。由于该框架将用于各种事情,因此我正在创建一个更通用的 Factory 来构建您的类,并递归地使用它的依赖项。
问题是,为了节省内存,每次实例化一个对象时,Factory 都会存储对它的引用,因此如果另一个对象依赖于该对象,则 Factory 只需返回该引用。这样我们就不需要两次实例化同一个对象。
这意味着,在许多类中,我们将对同一个对象有许多不同的引用。例如,如果我声明 Blog_model、Blog_controller、Blog_view、Form_validation 需要 Config 对象,它们中的每一个都将使用对同一 Config 对象的引用进行实例化,尽管是注入。
我不熟悉单元测试或任何类型的自动测试。我刚刚发现使用全局变量和静态变量是不好的(这就是我重写我使用的框架的原因)。我想问的是,这是否引入了全局状态?它是否会以任何方式阻碍测试?
- - 更新 - - -
它是一个用 PHP 编写的 MVC 框架。