PHP类函数命名

时间:2012-04-20 15:19:57

标签: php class function naming

我在命名函数时遇到问题。我有一个课程,我需要2个类似下面的功能。

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

当我打电话

tempclass('testing'); // ( called after creating the object )
正在调用

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

2 个答案:

答案 0 :(得分: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 */
  }
}

答案 1 :(得分:0)

在PHP中无法进行重载。

但是,对于上面的简单示例,这样的事情可行:

class myclass {
    public function tempclass ($text='Default') {
        echo $text;
    }
}