PHP两个具有相同名称的函数

时间:2011-10-13 18:45:43

标签: php

如何在php文件中包含两个具有相同名称的函数?

我有两个文件:

file1.php包含

  

function getResidentCount()   {}

     

function getResidentData()   {}

file2.php还包括

  

function getResidentCount()   {}

     

function getResidentData()   {}

我需要file3.php来包含所有这些函数,因为每个函数都用于计算不同的常驻计数和数据。

知道如何将这两个文件都包含在一个文件中。我无法更改原始文件(它们正在制作实时应用程序)。

谢谢, 克劳迪亚

5 个答案:

答案 0 :(得分:4)

这是邪恶的。我只提供它作为练习。

include('file1.php');
//include('file2.php'); 
$php=file_get_contents("file2.php");
$php=str_replace('getResidentCount', 'file2GetResidentCount', $php);
$php=str_replace('getResidentData', 'file2GetResidentData', $php);
eval($php);

现在您可以使用其他名称调用复制函数!

不要这样做。这只是一个想法:)

另一种方法是使用APD extension,它允许您重命名功能。包含第一个文件,使用rename_function重命名其功能,然后包含第二个文件。

真的,你应该深呼吸,延迟你正在做的事情,并重构你所拥有的。从中学习并改变你的做法,以免再次发生。 Namespaces可能会对您有所帮助,也可能采用更加面向对象的方法。

答案 1 :(得分:1)

不可能按原样包含这两个文件。这样做会导致PHP Fatal error: Cannot redeclare ...

Paul Dixon 提供了一个解决方法,如果您无法清理您的代码。

答案 2 :(得分:1)

如果您只需要在每次运行脚本时使用其中一个函数,那么您可以使用条件包含:

if (some_condition) {
    require_once 'file1.php';
} else {
    require_once 'file2.php';
}

答案 3 :(得分:0)

我最终为我需要两套这些功能的页面嵌套我的函数。感谢大家的帮助。

答案 4 :(得分:0)

寻找类似答案的解决方案,我惊讶地发现没人提到anonymous function

file1.php

$myfunction=function($val){
    //do something with val
    );

file2.php

$myfunction=function($val){
    //do something with val
    );

file3.php

for($i=1;$i<3;++$i){
    include_once('file'.$i.'.php');
    $result[$i]=$myfunction($val);
    }

该解决方案的唯一缺点是$myfunction被覆盖,因此不可重用。

但这也许可以通过clone解决(未经测试):

$allfunctions=[];    
for($i=1;$i<3;++$i){
        include_once('file'.$i.'.php');
        $allfunctions[$i]=clone $myfunction();
        }