它不是最漂亮的,它可能不是最有效的,但它可以工作.这个概念就是这个,而不是“包含”文件,你把它们作为字符串读取,包装你给它的命名空间然后评估它,然后这将允许你用命名空间调用每个函数…
我需要在This example为他的代码添加一些疯狂的道具algis我调整它做你想做的事.
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 "
";
echo $apple2->color();
输出:
red
green