2017-09-09 60 views
3

PHP何时在下面有这个?PHP - 使用命名空间 {Foo,Bar}?

use Namespace\{Foo, Bar} 

我碰到这种模式从the 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 
{ 
    // ... 
} 

然后:

<?php 

use Acme\{Foo, Bar}; 

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

回答

5

是的,它是有效的。它是在PHP 7.0中引入的。从docs

从PHP 7.0起,类,函数和常量被导入 来自同一个命名空间可以在一个单一的使用 语句进行分组。

<?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}; 
2

According to the docs,它是有效的PHP7向上:

从PHP 7.0起,类,函数和常量从同一个命名空间导入可以在单次使用的语句组合在一起。

它们提供了下面的例子:

<?php 

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

use function some\namespace\fn_a; 
use function some\namespace\fn_b; 
use function some\namespace\fn_c; 

use const some\namespace\ConstA; 
use const some\namespace\ConstB; 
use const some\namespace\ConstC; 

// 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}; 
相关问题