2017-09-09 3 views
3

Quand est-ce que PHP a ceci ci-dessous?PHP - utilise l'espace de noms {Foo, Bar}?

use Namespace\{Foo, Bar} 

je suis tombé sur ce modèle de 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 
{ 
    // ... 
} 

Et puis:

<?php 

use Acme\{Foo, Bar}; 

est-il valide? Si c'est le cas, où peut-on étudier plus avant?

Répondre

5

Oui, c'est valide. Il a été introduit en PHP 7.0. De l'docs:

A partir de PHP 7.0 partir, classes, fonctions et constantes importées du même espace de noms peuvent être regroupés en une seule utilisation déclaration .

<?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, il est valable dans PHP7 et vers le haut:

A partir de PHP 7.0 partir, classes, fonctions et constantes importées d'un même espace de noms peuvent être regroupés dans une déclaration à usage unique.

Ils fournissent l'exemple suivant:

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