PHP 中 di 容器的常量

Constants on di container in PHP

我看到最近在几个框架中使用的一种做法。它包括使用 class 常量而不是字符串在容器中注册对象。通常按照下面的示例添加对象。

$container[MyClass::name] = function(){
    // create object here
}

我一般用字符串:

$container['MyClass'] = function(){
    // create object here
}

我想知道这个诊所的设施。

这与 IDE 的重构方式有关。

假设您有 class MyClass

而你使用:

$container['MyClass'] = function(){
    // create object here
}

如果您重命名 class 'MyClass',您将需要在任何使用它的地方重命名该字符串。重构工具将更难找出字符串 'MyClass',在本例中是对 class 的引用,而不是一段随机过程。

如果您使用:

$container[MyClass::name] = function(){
   // create object here
}

您需要重命名 class MyClass,但许多 IDE(例如 phpstorm、vscode 等)具有自动重命名(重构)在您的代码中到处引用 class,并且由于您使用的是 class 而不是字符串,他们会发现 MyClass 需要重命名。

这样维护第二个比第一个容易很多。