我看到最近在多个框架中使用了一种做法。它包括使用类常量而不是字符串在容器中注册对象。通常,按照以下示例添加对象。
$container[MyClass::name] = function(){
// create object here
}
我通常使用一个字符串:
$container['MyClass'] = function(){
// create object here
}
我想知道这种做法的便利性。
答案 0 :(得分:1)
这与IDE的重构方式有关。
假设您有@bot.command()
async def rename(ctx, name):
await bot.user.edit(username=name)
类
然后您使用:
MyClass
如果重命名类“ MyClass”,则需要在所有使用该字符串的地方重命名该字符串。重构工具将很难确定字符串'MyClass',在这种情况下是对类的引用,而不是一段随机的请求。
如果您使用:
$container['MyClass'] = function(){
// create object here
}
您需要重命名类MyClass,但是许多IDE(例如phpstorm,vscode等)都具有工具,可以在代码中的任何地方自动重命名(重构)对类的引用,并且因为您使用了类和不是一个字符串,他们会发现MyClass需要重命名。
这样,维护第二个要容易得多。