最佳答案
最近我遇到一个类,它在类定义中使用 use
语句。
有人能解释一下它到底是干什么的吗? 因为我找不到任何关于它的信息。
我理解这可能是一种将它从给定文件的全局作用域移开的方法,但是它是否也允许给定类从多个父类继承——因为 extends
只允许一个父类引用?
我看到的例子是原始安装 Laravel 的 User 模型:
<?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
类中包含的方法的模型示例-因此我怀疑,但是我真的想了解更多关于所包含的 use
语句的含义。
PHP 文档 说:
关键字 use 必须在文件的最外层范围( 全局范围)或命名空间声明内 导入是在编译时而不是运行时完成的,所以它不能 块作用域。下面的示例将显示对 关键字:
其次是例子:
namespace Languages;
class Greenlandic
{
use Languages\Danish;
...
}
这将表明它是一个不正确的使用 use
关键字-任何线索?