我想知道何时使用完全限定的类名或何时use在类的顶部放置语句。例如:
namespace App;
use Illuminate\Database\Eloquent\Model;
class ImageStatus extends Model {
public function image(): \Illuminate\Database\Eloquent\Relations\BelongsTo {
return $this->belongsTo( \App\Image::class, 'id' );
}
public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo {
return $this->belongsTo( \App\User::class, 'id' );
}
}
Run Code Online (Sandbox Code Playgroud)
目前我有这段代码,我的 PHPStorm 告诉我Unnecessary fully qualified name。当我将其更改为:时,该提示消失了:
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class ImageStatus extends Model {
public function image(): BelongsTo {
return $this->belongsTo( \App\Image::class, 'id' );
}
public function user(): BelongsTo {
return $this->belongsTo( \App\User::class, 'id' );
}
}
Run Code Online (Sandbox Code Playgroud)
所以我想知道有什么区别,性能方面,代码可读性以及一个是否比另一个更好。
当你use SomeNamespace\ClassName这样做时,你没有稍后追加\SomeNamespace到ClassName. 所以你的例子应该是
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class ImageStatus extends Model {
public function image(): BelongsTo {
return $this->belongsTo(Image::class, 'id' );
}
public function user(): BelongsTo {
return $this->belongsTo(User::class, 'id' );
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,当您位于同一名称空间中时,不需要将名称空间添加到类名中。namespace App;那么什么时候User::class而不是\App\User::class