【问题标题】:Constants on di container in PHPPHP中di容器上的常量
【发布时间】:2019-02-18 16:43:55
【问题描述】:

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

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

我通常使用字符串:

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

我想知道这种做法的设施。

【问题讨论】:

    标签: php ioc-container


    【解决方案1】:

    这与 IDE 如何进行重构有关。

    假设你有课程MyClass

    而你使用:

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

    如果您将类重命名为“MyClass”,则需要在使用它的任何地方重命名该字符串。重构工具将很难找出字符串“MyClass”,在这种情况下是对一个类的引用,而不是一个随机的 proze。

    如果你使用:

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

    您需要重命名 MyClass 类,但许多 IDE(例如 phpstorm、vscode 等)具有自动重命名(重构)代码中对类的引用的工具,因为您使用了一个类和不是字符串,他们会发现 MyClass 需要重命名。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多