0

这是一种情况。

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

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

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

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

提前感谢您的帮助。

4

2 回答 2

1

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

于 2012-09-01T09:26:27.623 回答
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();

}

于 2012-09-03T05:44:03.883 回答