首页 > 解决方案 > 什么是“使用功能”表达?

问题描述

我看到了这个片段,但我不明白为什么要使用 use function array_map表达式?

<?php

namespace Project\MyProject;

use function array_map;

class MyProjectClass 
{
    protected $arr = [];
    public function __construct(array $arr)
    {
        $this->arr = array_map('trim', $arr);
    }
}

标签: php

解决方案


如何从命名空间 PHP 调用全局函数类中所述:

use function array_map;

将全局函数别名到本地命名空间中。

  • 这通常是不需要的。
  • 无论如何,PHP 在全局范围内查找函数。
  • 只有在当前命名空间中重新声明全局函数时才有意义。
    • 这是一种罕见的情况。
    • 但是如果你有(这被称为“猴子补丁”)那么你也不想用use function.

介绍的真正原因use function是:

  • 对于实际的别名/重命名功能:

    • use function App\Helpers\my_mappymcmapface as array_map;
    • use function \trim as chomp;
  • 也因为 PHP 编码人员一直在乱扔他们的代码\trim\strpos

    • 那是那些毫无根据的微观性能优化之一。

所以是的,对于这种情况,这是毫无意义的装饰。


推荐阅读