2

我在命名函数时遇到了麻烦。我有一堂课,我需要 2 个函数,如下所示。

class myclass {
    public function tempclass () {
        echo "default";   
    }
    public function tempclass ( $text ) {
        echo $text;
    }
}

当我打电话

tempclass('testing'); // ( called after creating the object )

function tempclass()被调用我如何才能拥有 2 个名称相同但参数不同的函数?

4

2 回答 2

5

传统的重载目前在 PHP 中是不可能的。相反,您需要检查传递的参数,并确定您希望如何响应。

检查func_num_argsfunc_get_args在这一点上。您可以在内部使用这两种方法来确定您应该如何响应某些方法的调用。例如,在您的情况下,您可以执行以下操作:

public function tempclass () {
  switch ( func_num_args() ) {
    case 0:
      /* Do something */
      break;
    case 1:
      /* Do something else */
  }
}

或者,您也可以为您的参数提供默认值,并使用这些值来确定您应该如何反应:

public function tempclass ( $text = false ) {
  if ( $text ) {
    /* This method was provided with text */ 
  } else {
    /* This method was not invoked with text */
  }
}
于 2012-04-20T15:22:48.487 回答
0

重载在 PHP 中是不可能的。

但是,对于您上面的简单示例,这样的事情会起作用:

class myclass {
    public function tempclass ($text='Default') {
        echo $text;
    }
}
于 2012-04-20T15:25:26.003 回答