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 需要重命名。
这样维护第二个比第一个容易很多。
我看到最近在几个框架中使用的一种做法。它包括使用 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 需要重命名。
这样维护第二个比第一个容易很多。