如果我只需要使用PHP类中的一个静态属性,哪个代码更好?

时间:2019-06-10 05:24:31

标签: php yii2

如果我只需要在代码中使用:: class属性,是否应该像这样导入整个类?

use my\namespace\MyClass;
MyClass::class;

还是我应该这样做?

my\namespace\MyClass::class;

哪个是更快/更好的解决方案?还是没有区别? 如果需要的话,我正在使用Yii2框架

2 个答案:

答案 0 :(得分:4)

没有区别,仅是代码风格的问题。两种变体生成相同的操作码,因此它们的工作原理相同,并且两者之间没有性能差异。您可以使用更适合您的版本,但是使用use语句导入类具有一些优点:

  1. 更多DRY:如果您需要两次使用同一类,则无需重复两次FQN。它还可以确保一致性-在一个地方使用my\namespace\MyClass而在其他地方some\vendor\namespace\MyClass则没有风险。
  2. 它对重构的影响较小-更改类名称空间将仅影响导入部分,而不会涉及使用该类的实际代码(git blame中无意义的更改)。
  3. “导入所有内容”更易于遵循和配置CS修复程序,以确保将其作为CS规则。
  4. 因此,您始终可以获得特定文件中使用的类的完整列表,这可能有助于您发现一些错误(“呃,应该是my\namespace\MyClass而不是some\vendor\namespace\MyClass”)和体系结构问题(“嗯,此文件中导入了60个类,也许它的职责太多了……”。)

答案 1 :(得分:0)

命名空间:

两者都是有效的并且可以正常工作,但是为了简单起见,您可以在一行中声明它

my\namespace\MyClass::class;