我有一个用于创建用户的功能,但是我定义了两个模型“用户”和“演示用户”,所以我有两个不同的模型。
这些模型具有相似和不同的属性,但是例如,它们具有诸如“电子邮件”之类的常见属性。
该函数具有这种结构,我接收对象“ User”作为参数,但是我希望您接收对象“ User”或对象“ DemoUser”
public function createLogin(User $user)
{
...
}
我不知道这是否会成为注入依赖项的主题...
谢谢你,我在等待你的评论
答案 0 :(得分:2)
仅在允许该方法同时接受User和DemoUser类型的问题上,您可以设置User和DemoUser都可以实现的Interface类。
希望有帮助。
答案 1 :(得分:0)
您可以尝试使用接口或抽象类来实现。创建一个接口并在两个模型中实现它,或者创建一个抽象类并从您的两个用户类扩展它。然后在传递参数时,使用接口或抽象类作为类型提示,例如
public function createLogin(UserInterface $user) {
}
答案 2 :(得分:-1)
您可以这样做,
public function createLogin($user)
{
if (is_a($user, 'App\User'))
{
// Create your user here
}
elseif(is_a($user, 'App\DemoUser'))
{
// create demo user here
}
}
答案 3 :(得分:-1)
一种方法是扩展具有createLogin
方法的类,并使用以下方法重写该方法:
public function createLogin($user)
{
if ($user instanceOf User) {
parent::createLogin($user)
}
if ($user instanceOf DemoUser) {
// Login logic for DemoUser
}
}
*如果您有任何疑问,请告诉我