问题
I have this code in Laravel 5.2 that checks if a given db table name ($what) has its own Model :
public function manage($what) {
$model = Str::studly(Str::singular($what));
if (!is_subclass_of($model, 'Model')) {
\App::abort(404);
}
/* [... other stuff ...] */
}
The problem is that is_subclass_of always fail, also when the model exist and it's a subclass of Model. I suppose it's a namespace problem, how can I fix it?
回答1:
You may need the full namespace. When I do get_parent_class() on one of my models, it returns Illuminate\Database\Eloquent\Model. So use this instead:
$model = 'App\\' . Str::studly(Str::singular($what));
if (!is_subclass_of($model, 'Illuminate\Database\Eloquent\Model')) {
回答2:
You can check if your object is an instance of a model with instanceof:
$article = new \App\Article();
if ($article instanceof \Illuminate\Database\Eloquent\Model) {
来源:https://stackoverflow.com/questions/40766734/check-if-a-class-is-a-model-in-laravel-5