g4b*_*4b0 3 php laravel laravel-5.2
我在Laravel 5.2中有这个代码,它检查给定的db表名($ what)是否有自己的Model:
public function manage($what) {
$model = Str::studly(Str::singular($what));
if (!is_subclass_of($model, 'Model')) {
\App::abort(404);
}
/* [... other stuff ...] */
}
Run Code Online (Sandbox Code Playgroud)
问题是is_subclass_of总是失败,当模型存在并且它是Model的子类时也是如此.我想这是命名空间问题,我该如何解决?
Ale*_*nin 12
您可以检查您的对象是否是模型的实例instanceof:
$article = new \App\Article();
if ($article instanceof \Illuminate\Database\Eloquent\Model) {
Run Code Online (Sandbox Code Playgroud)
您可能需要完整的命名空间。当我get_parent_class()对我的一个模型进行操作时,它返回Illuminate\Database\Eloquent\Model. 所以改用这个:
$model = 'App\\' . Str::studly(Str::singular($what));
if (!is_subclass_of($model, 'Illuminate\Database\Eloquent\Model')) {
Run Code Online (Sandbox Code Playgroud)