PHP:在类定义中使用'use'

最近我遇到了一个在类定义里面使用use语句的类。

有人可以解释它到底做了什么 – 因为我找不到任何有关它的信息。

我知道这可能是一种将其从给定文件的全局范围移开的方式,但它是否允许给定类inheritance多个父类 – 因为extends只允许一个父类引用?

我看到的例子是在Laravel的原始安装的用户模型中:

 <?php use Illuminate\Auth\UserTrait; use Illuminate\Auth\UserInterface; use Illuminate\Auth\Reminders\RemindableTrait; use Illuminate\Auth\Reminders\RemindableInterface; class User extends Eloquent implements UserInterface, RemindableInterface { use UserTrait, RemindableTrait; /** * The database table used by the model. * * @var string */ protected $table = 'users'; /** * The attributes excluded from the model's JSON form. * * @var array */ protected $hidden = array('password', 'remember_token'); } 

我已经看到了一些实际使用UserTrait类中包含的方法的UserTrait – 因此我怀疑,但是真的想更多地了解所附的use语句的含义。

PHP文档说:

use关键字必须在文件的最外层范围(全局范围)或名称空间声明内声明。 这是因为导入是在编译时完成的,而不是运行时完成的,所以不能被块范围限制。 以下示例将显示非法使用use关键字:

接下来是例子:

 namespace Languages; class Greenlandic { use Languages\Danish; ... } 

这将表明这是use关键字的不正确使用 – 任何线索?

他们被称为使用PHP 5 OOP中包含的“使用”语句使用的特质,他们是单一的inheritance更多的细节检查下面

http://php.net/manual/en/language.oop5.traits.php