它不是最漂亮的,也可能不是最有效的,但它确实有效。这个概念是这样的,而不是“包含”文件,而是将它们作为字符串读入,将你给它的命名空间包装起来,然后对其进行评估,这将允许你使用命名空间调用每个函数......
我需要在这个例子中为他的代码添加一些疯狂的道具,我调整了它来做你想做的事。
function create_namespace($str, $namespace) {
$php_start = 0;
$tag = '<?php';
$endtag = '?>';
$start_pos = $php_start + strlen($tag);
$end_pos = strpos($str, $endtag, $start_pos);
$php_code = substr($str, $start_pos, $end_pos - $start_pos);
if (strtolower(substr($php_code, 0, 3)) == 'php')
$php_code = substr($php_code, 3);
$part1 = "namespace $namespace ;";
ob_start();
eval($part1 . $php_code);
ob_end_clean();
}
$str1 = file_get_contents('apple1.php');
$str2 = file_get_contents('apple2.php');
create_namespace($str1, "red");
create_namespace($str2, "green");
$apple1=new red\apple();
$apple2=new green\apple();
echo $apple1->color();
echo "<br/>";
echo $apple2->color();
输出:
red
green