我正在使用一些数据库多态性通过 eloquent/laravel 连接表关系。(注意下面的例子已经被简化了,这两个对象已经在扩展一个基类,所以我不能扩展另一个可以实现我想要的行为的基类,它们扩展的基类与其他与我正在尝试的类无关的类共享在下面做)
class Pageable{
public function table() {
return $this->morphTo();
}
}
class User {
public function pageable() {
return $this->morphOne('Pageable', 'table');
}
public function returnUrl() {
return "http://...";
}
}
class Company {
public function pageable() {
return $this->morphOne('Pageable', 'table');
}
public function returnUrl() {
return "http://...";
}
}
我遍历 pageable,然后可以检索 User 或 Company 对象,但是我需要一个通用函数,例如 returnUrl,我可以调用任何可能被多态化为该关系的对象。有什么方法可以清理上面的内容,或者至少创建一些故障安全检查,以确保所有必需的方法都在类中实现,例如它们实现 PeageableInterface。例如,我可以在界面中设置需要此 returnUrl 函数的要求吗?
我将如何创建这样的界面?