我可以有这样的功能:
public function user_to(String $user = null){
$this->user = $user;
return $this;
}
另一个像这样
public function user_to(Array $user = null){
$this->user = $user;
return $this;
}
完全没有任何问题?我的意思是,我希望仅当参数是字符串时才调用第一个,而当它是数组时才调用第二个。
我知道我只能用一个函数就可以做到这一点,并且gettype()
想知道它是数组还是字符串,但是我想拥有不同的函数
PHP不允许使用相同名称的多个函数。因此,您应该在函数内部检查该函数,而不是定义一个具有相同名称但变量类型不同的单独函数。
public function user_to($user = null){
if (is_array($user) || is_string($user)) {
$this->user = $user;
return $this;
} else {
/* Do whatever; for example throw an exception or return false */
}
}
尝试重新声明PHP中已经存在的函数会导致致命错误。从手册中
PHP不支持函数重载,也无法取消定义或重新定义先前声明的函数。
在即将发布的PHP 8中,您可以在typehinting或“ union types”(参考)中定义多种类型。
因此,您可以要求参数为数组或字符串,或者为可空值(因为这是默认值)。
public function user_to(array|string|null $user = null) {
$this->user = $user;
return $this;
}
但是,如果您插入其他类型,则这将引发致命错误。
致命错误:未捕获的TypeError:传递给user_to()的参数1必须为字符串类型,给定对象
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句