我们可以在Codeigniter控制器中创建两个具有相同名称的函数吗?

时间:2014-06-03 15:22:03

标签: php codeigniter

有没有办法在Codeigniter控制器中创建2个函数,其中一个函数包含参数而另一个函数不包含参数。我正在使用下面的代码,它给了我一个错误。

class example extends CI_Controller {
    function show() {
        #code goes here
    }

   function show($id) {
       #code goes here
    }
}

但是它显示了一个错误,函数名称不能相同。

2 个答案:

答案 0 :(得分:10)

不,但你可以这样做:

function show($id = null)
{
    if ($id === null) {
        // $id was not passed
    } else {
        // $id was passed
    }
}

答案 1 :(得分:0)

根据PHP手册而不是:

  

PHP不支持函数重载,也不可能取消定义或重新定义以前声明的函数。   http://php.net/manual/en/functions.user-defined.php

但是使用Runkit可以这样做:

<?php
function testme() {
  echo "Original Testme Implementation\n";
}
testme();
runkit_function_redefine('testme','','echo "New Testme Implementation\n";');
testme();
?>

http://us3.php.net/manual/en/function.runkit-function-redefine.php