为函数

时间:2018-03-26 11:09:44

标签: php mysql mongodb laravel laravel-5.3

我已经对此进行了一些谷歌搜索,似乎无法找到很多帮助。但是,我想知道是否有一种方法可以检查函数中的参数的多个实例类型,因此要检查它是否是User模型的实例或其他模型,例如它是否是其中之一然后允许它通过。如果没有,抛出错误。我正在使用PHP和Laravel。

这里的用例是我将数据库从SQL迁移到Mongo,因此在过渡期间我会有两个用户模型(UserMongoUser)并且我想要检查每个参数以确定参数是否是某种形式的用户实例。

public function setTo(User $user)
    {
        $this->user()->associate($user);

        return $this;
    }

最后,我可以复制这些功能,但这似乎是不必要的重复。而且我不想完全删除实例检查。

我想知道是否有办法实现这一目标?如果没有,我有兴趣听听人们对最佳处理方式的看法。

谢谢!

1 个答案:

答案 0 :(得分:1)

在这里你可以做什么:
让两个类(User和MongoUser)扩展一个基类(UserBase ??)并检查它。

tf.import_graph_def

另一种可能性是省略方法声明中的限制并进行手动测试:

<?php

class base {
}

class A extends base {
}

class B extends base {
}

class C {
}

function test(base $x) {
    var_dump($x);
}


test(new base()); // good
test(new A());  // good
test(new B());  // good
test(new C());  // throws error because class C doesn't extend base class