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更多的细节检查下面