这是一种情况。
我想在我的服务器上复制两次API但使用不同的数据库。我想要做的是使用这些API的一些功能。在PHP中,我有一种情况,即我正在推动所有这些API位置的循环。
forach($apis as $api){
include ($api->apiFiles);
useAPIfunction();
}
问题是API具有相同的函数和类,循环运行一次,但第二次PHP致命错误无法重新声明函数“发生。
现在我不想更改API,比如更改函数名称等,我必须从我的脚本中完成所有操作。是否存在在第一次迭代完成后取消注册API文件的情况,因为这是包含新API的唯一方法。
先谢谢你的帮助。
答案 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();
}