是否可以为参数指定多个类型提示?
2022-08-30 19:31:20
有没有办法向方法添加多个类型提示?例如,foo(param) 必须接收字符串 OR bar OR baz 的实例。
有没有办法向方法添加多个类型提示?例如,foo(param) 必须接收字符串 OR bar OR baz 的实例。
这是不可能的(除了在方法内部)。您只能提供单个类型提示,并且只能为对象/接口和数组提供提示(从 PHP 5.1 开始)。
但是,您可以/应该将其记录在您的方法中,即:
/**
* @param string|Bar|Baz $param1
*/
function foo($param1);
这是接口的一种用法。如果要确保对象具有方法,则可以期望使用接口:->foobar($baz)
interface iFooBar {
public function foobar($baz);
}
class Foo implements iFooBar {
public function foobar($baz) { echo $baz; }
}
class Bar implements iFooBar {
public function foobar($baz) { print_r($baz); }
}
function doSomething(iFooBar $foo) {
$foo->foobar('something');
}
然后,在呼叫时,这些将起作用:
doSomething(new Foo());
doSomething(new Bar());
这些不会:
doSomething(new StdClass());
doSomething('testing');