PHP - 使用Namespace\{Foo,Bar}?

lau*_*kok 3 php php-7

PHP什么时候有这个?

use Namespace\{Foo, Bar}
Run Code Online (Sandbox Code Playgroud)

我从php pleague中发现了这种模式:

namespace Acme;

class Foo
{
    /**
     * @type Acme\Bar
     */
    public $bar;

    /**
     * Construct.
     *
     * @param \Acme\Bar $bar
     */
    public function __construct(Bar $bar)
    {
        $this->bar = $bar;
    }
}

class Bar
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

然后:

<?php

use Acme\{Foo, Bar};
Run Code Online (Sandbox Code Playgroud)

有效吗?如果是,哪里可以进一步研究?

Ben*_*enM 5

是的,它是有效的.它是在PHP 7.0中引入的.来自文档:

从PHP 7.0开始,从同一名称空间导入的类,函数和常量可以在一个use语句中组合在一起.

<?php

// Pre PHP 7 code
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;

...

// PHP 7+ code
use some\namespace\{ClassA, ClassB, ClassC as C};
use function some\namespace\{fn_a, fn_b, fn_c};
use const some\namespace\{ConstA, ConstB, ConstC};
Run Code Online (Sandbox Code Playgroud)