我们应该使用'使用'如果我们只调用一次函数?

时间:2017-01-24 14:15:04

标签: php performance

即使我们只调用一次函数,使用关键字use也不好吗? 例如。我有自己的typo3扩展,我在我的控制器中访问一个typo3核心函数,但只有一次。

$message = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MailMessage');

我也可以使用use

use \TYPO3\CMS\Core\Utility\GeneralUtility;
...
$message = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MailMessage');

在我看来,第二个版本更清晰,但如果我只使用use进行一次通话,是否存在任何性能问题?

4 个答案:

答案 0 :(得分:2)

从理论上讲,应该没有性能影响。你以任何一种方式调用一个函数(以及一个自动加载器)(这将是任何性能命中的地方)。

要解释原因,您的use语句只是一个别名。您的自动加载器将以相同的方式执行相同的工作。它很可能是操作码缓存,所以任何性能命中(我们在这里说毫秒,如果那样)将只在第一次运行。

答案 1 :(得分:2)

导入类然后使用::class引用它们更简洁,例如...

use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Mail\MailMessage;

$message = GeneralUtility::makeInstance(MailMessage::class);

答案 2 :(得分:1)

我也特别喜欢第二种选择。而且没有性能损失。您可以毫无顾虑地使用第二个。

答案 3 :(得分:-1)

在命名空间上下文中,第一个选项更快,因为FQNS可能更具可读性(这是一个品味问题)。当有很多“进口” 它可能表明过高的依赖程度和违反单一责任原则。所以我经常使用FQNS使用内联命名空间。

  

使用完全限定的函数调用来优化PHP性能   https://veewee.github.io/blog/optimizing-php-performance-by-fq-function-calls/

尝试分析您的代码以获得答案。