我正在编写一个辅助函数,通过检查任何相关字段是否不等于null来检查数据库中是否存在任何地址信息。
因此,我有两个模型需要在函数中作为参数接受。
传递的变量可以是一个。
对于只接受一种模型的函数,我可以这样做:
function check_for_address_info(App\Customer $customer) {
// other unrelated stuff
}
是否可以接受两个模型,还是必须通过执行以下操作在功能中手动检查它:
function check_for_address_info($param) {
if(!is_a($param, 'App\Customer' || !is_a($param, 'App\Supplier')) {
// not an instance of either model
return false;
}
// do stuff as normal
}
关于如何接受两个不同模型作为函数参数的任何想法?
我正在使用Laravel 5.8。
答案 0 :(得分:4)
有两种方法,如果在继承方面有意义,则可以扩展父模型并将其声明为参数的类型。如果您将错误的类型传递给方法,则会在运行时检查该错误并提供错误消息。
public class Profile extends Model {
}
public class Customer extends Profile {
}
public class Supplier extends Profile {
}
function check_for_address_info(App\Profile $customerOrSupplier) {
}
在弱类型语言中,通常具有通用的参数。 PHP
解决此问题的方法是,您可以在PHP
Doc块中声明它。这不会在运行时检查类型,主要用于键入提示,文档和静态分析工具。
/**
* @parameter \App\Customer|\App\Supplier $customerOrSupplier
**/
function check_for_address_info($customerOrSupplier) {
}