我有这样的事情:
class ModelA extends Model {}
class ModelB extends Model {}
class DefaultController extends Controller {
protected function getData(Model $model) {
return $model::where(...)->first();
}
}
class MyControllerA extends DefaultController {
private function show() {
$this->getData(new ModelA);
// Error: Must be Model, but ModelA given.
}
}
class MyControllerB extends DefaultController {
private function show() {
$this->getData(new ModelB);
// Error: Must be Model, but ModelB given.
}
}
我想将Model
的任何实例传递给function getData
,因为在该方法中我只会使用Model
个实例。当我传递ModelA
PHP实例时,会抛出Model
作为参数的错误。我无法定义getData(ModelA $model)
,因为我需要将任何模型子类(例如ModelB
)传递给该方法。
据我所知,如果Model
为abstract
,我可以这样做,但事实并非如此。