Php 相同的函数名不同的参数类型
我可以有这样一个函数吗:Php 相同的函数名不同的参数类型,php,Php,我可以有这样一个函数吗: public function user_to(String $user = null){ $this->user = $user; return $this; } 还有一个像这样的 public function user_to(Array $user = null){ $this->user = $user; return $this; } 没有任何问题吗?我的意思是,我只想在参数是字符串时调用第一个,在参数是数组时调
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不支持函数重载,也不可能取消定义或重新定义以前声明的函数
在即将发布的PHP8中,您可以在类型提示或联合类型中定义多个类型
因此,可以要求参数为数组或字符串,也可以为null,因为这是默认值
公共函数user_toarray | string | null$user=null{
$this->user=$user;
退还$this;
}
但是,如果插入不同类型的内容,则会引发致命错误
致命错误:未捕获的TypeError:传递给用户_to的参数1必须是给定对象的字符串类型
你试过了吗?这似乎是一件你可以在几分钟内自己测试的事情。我做得很好,只需要你的意见,当我在做的时候。也许看一看可能会有所帮助