我有4个模型由4个枢轴表固定在一起:
用户,公司,电话,地址
用户和公司都与枢轴表user_phone和company_phone一起电话。
用户有一种方法:addDefaultPhone( Request $request )
。它抓住$request->input()
并创建电话号码并将其附加到用户。
在公司类中可以使用相同的精确方法。如何将AddDefaultAddress包括到两个类中(当然不复制和粘贴(?
您可以使用继承或特质。选择您想要的任何东西。
继承
创建一个基类:
namespace App;
use IlluminateDatabaseEloquentModel;
class ThingWithAPhone extends Model {
public function addDefaultPhone() {
/* Whatever you want... */
}
}
然后用户和公司都可以扩展此类:
// In the user file
class User extends ThingWithAPhone { /* ... */ }
// In the company file
class Company extends ThingWithAPhone { /* ... */ }
特质
创建一个特质:
namespace App;
class Phonable {
public function addDefaultPhone() {
/* Whatever you want... */
}
}
使用此特征:
// In the user file
class User extends Model {
use Phonable;
/* ... */
}
// In the company file
class Company extends Model {
use Phonable;
/* ... */
} }
使用特质,您可以创建具有X特征的类,而另一种具有Y特征的类,其中一些特质可能是两个类别的共同点。
我能想到的最好的是创建一个trait
并在类中共享。