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)
有效吗?如果是,哪里可以进一步研究?
是的,它是有效的.它是在PHP 7.0中引入的.来自文档:
从PHP 7.0开始,从同一名称空间导入的类,函数和常量可以在一个use语句中组合在一起.
Run Code Online (Sandbox Code Playgroud)<?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};