使用相同的函数名包含两次相同的文件

时间:2012-09-01 06:47:09

标签: php function

这是一种情况。

我想在我的服务器上复制两次API但使用不同的数据库。我想要做的是使用这些API的一些功能。在PHP中,我有一种情况,即我正在推动所有这些API位置的循环。

forach($apis as $api){
 include ($api->apiFiles);
 useAPIfunction();
}

问题是API具有相同的函数和类,循环运行一次,但第二次PHP致命错误无法重新声明函数“发生。

现在我不想更改API,比如更改函数名称等,我必须从我的脚本中完成所有操作。是否存在在第一次迭代完成后取消注册API文件的情况,因为这是包含新API的唯一方法。

先谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您不需要多次包含相同的API,只需包含一次(您可以使用include_once命令避免多次加载相同的API)。理想情况下,API应该使用参数告诉它使用什么数据库。但如果它使用全局变量,则在调用API函数之前设置变量。它最好使用参数,因为第二种方式意味着你一次只能使用一个数据库。

答案 1 :(得分:0)

我做了一招。我在第一次迭代中包含了API文件,然后在其他迭代中添加了一个连接到第二个数据库的脚本,反之亦然。现在,API将使用第一个API文件连接一次,但数据库正在更改新的迭代。此外,我没有找到获取数据库信息的方法,因此我从API配置文件中检索了它。

forach($apis as $api){
 if($count = 0){
  include ($api->apiFiles);
 }else{
  $theData = file_get_contents($api->path'\includes\config.php', NULL, NULL, 10, 600);
  $theData = str_replace('<?php','',$theData);
  $theData = explode("'",$theData);
  $apiHost = $theData[19];
  $apiDB = $theData[7];
  $apiDbUser = $theData[11];
  $apiDBPass = $theData[15];

  mysql_connect($apiHost,$apiUser,$apiPass);
  mysql_select_db($apiDB);
 }
 useAPIfunction();

}