在Laravel的两个模型中使用一种方法;oop php



我有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并在类中共享。

相关内容

最新更新