小编g4b*_*4b0的帖子

检查类是否是Laravel 5中的模型

我在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的子类时也是如此.我想这是命名空间问题,我该如何解决?

php laravel laravel-5.2

3
推荐指数
2
解决办法
6956
查看次数

检查抽象类内部的接口实现是否是反模式?

以下代码是否违反某些OOP原则/模式?

我尤其对Vehicle :: whatCanDo()方法中的instanceof检查感兴趣,该检查检查子类是否构成特定接口。

乍一看,它似乎违反了Liskov原则,但实际上并没有违反,因为Airplane和Car类仍然可以互换。

abstract class Vehicle {

  public function whatCanDo() {   
    if ($this instanceof CanFly) {
      echo "can fly";
    }
  }

}

interface CanFly {
}

class Airplane extends Vehicle implements CanFly {
}

class Car extends Vehicle {
}
Run Code Online (Sandbox Code Playgroud)

php oop

3
推荐指数
1
解决办法
54
查看次数

标签 统计

php ×2

laravel ×1

laravel-5.2 ×1

oop ×1