即使我们只调用一次函数,使用关键字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
进行一次通话,是否存在任何性能问题?
答案 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/
尝试分析您的代码以获得答案。