包含具有重复类的文件

时间:2015-07-16 04:38:12

标签: php oop classname

我想要包含一个包含我的应用程序中已存在的类的文件。显然这导致:

PHP Fatal error:  Cannot redeclare class XYZ

由于我不会进入这里的原因,我无法更改相关文件的代码,也无法更改包含原始类的文件。出于这个原因,我并不认为命名空间是一种选择 - 尽管我对这个概念有点新意,所以我可能错了。

  • 有没有办法动态更改正在读取的文件的内容以便动态更改类名声明?
  • 我可以以某种方式销毁或取消包含已存在的重复类吗?

我意识到这不太可能是干净的。任何有关变通方法的想法都是受欢迎的。

1 个答案:

答案 0 :(得分:0)

我会根据评论中提到的想法回答我自己的问题。

$path = "/path/to/include/file.php";
$className = "OriginalClassname";
$tempClass = "ReplacementClassname";

$buffer = file_get_contents($file);
$buffer = str_replace($className,$tempClass,$buffer);
$file = 'temp.php';
file_put_contents($file, $buffer);
include_once($file);
unlink($file);

简而言之:

  • 将文件读入变量
  • 替换classname
  • 将变量写入临时文件
  • 包含临时文件
  • 删除临时文件

像魅力一样工作。