为什么我们应该使用use
语句在类外部导入特征,然后在类内部再次使用??!
示例(在Laravel用户模型中):
use Illuminate\Database\Eloquent\SoftDeletes;
class User extends Authenticatable
{
use SoftDeletes;
.
.
.
.
.
}
为什么特质与其他类不同,我们只在类外导入名称空间并可以直接使用它,为什么呢?!
答案 0 :(得分:1)
使用类外部使用名称空间包含实际类。因此,它只是包含在内,但尚未在该类中使用。
如果您确实需要在类中使用该类,则需要在类中使用它。
您可以按照以下方式在课堂外省略使用。
使用Illuminate \ Database \ Eloquent \ SoftDeletes;
直接在班级内部。
答案 1 :(得分:1)
因为第一个use
指示要使用的类,该类已由自动加载器要求。这有助于防止具有相同名称的类发生冲突。
例如
// same name but avoid collision by an alias
use App\Models\Request as RequestModel;
use Request;
第二种用法绑定到Trait
,并指示应在此类中使用它。您可以(不好的做法)在1个文件中定义多个类,这就是为什么需要显示要在该特定类上使用Trait的原因。
// test.php
class A {
use SomeTrait;
}
class B {
/// not using Trait
}
答案 2 :(得分:1)