我有一个文件,我们称之为first.php
。它回应了很多文字。在该文本中,我还想包含另一个文件,second.php
回声。我希望在不包含second.php
代码的情况下执行此操作,因为存在冲突。
TL; DR我希望PHP脚本执行另一个脚本,等待它打印,然后回显它打印的任何内容。
尝试
echo something
include second script
echo something else
但由于所述碰撞,它无法发挥作用。第二个脚本只打印一个简短的纯文本。
更好的例子
$i=1
$i=2
$i=1
答案 0 :(得分:1)
您可以通过CLI使用shell_exec
echo something
shell_exec("php second.php");
echo something else
但是,如果第二个脚本需要访问由网络服务器设置的变量,例如$_GET
或$_SERVER
,则无法使用此功能。如果需要传递某些变量,可以将它们作为命令行参数发送。但是第二个脚本必须使用$argv
访问它们,而不是$_GET
。
shell_exec("php second.php " . escapeshellarg($_GET['id']));
second.php
可以从$argv[1]
获取ID。
答案 1 :(得分:1)
<?php
$i = 1;
echo 'hello';
echo call_user_func(function() {
// in your case this would be a include statement
$i = 2;
return 'beautiful';
});
echo 'world';
var_dump($i); // 1
如果你确实需要&#34; import&#34;来自当前范围的变量创建了一个闭包:
<?php
$i = 1;
echo 'hello';
echo call_user_func(function() use ($theVariable) {
// in your case this would be a include statement
$i = 2;
return 'beautiful';
});
echo 'world';
var_dump($i); // 1
答案 2 :(得分:1)
您可以在函数中包含第二个文件。函数有自己的变量范围。因此,第二个文件的变量不能用第一个脚本文件的相同名称覆盖变量。
$myvar = 1;
include 'first.php';
callSecond ();
echo $myvar;
function callSecond () {
include 'second.php';
}
echo $ myvar 会提供 1 ,即使'second.php'指定$ myvar = 2;