相同的函数名称不同的参数类型

时间:2018-01-15 17:45:50

标签: 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;
}

没有任何问题?我的意思是,我希望第一个只在参数是一个字符串时被调用,而第二个在它是一个数组时被调用。

我知道我只能使用一个函数执行它并执行gettype()来知道它是一个数组还是一个字符串但我想要有不同的函数

1 个答案:

答案 0 :(得分:3)

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不支持函数重载,也不可能取消定义或重新定义以前声明的函数。