档案a.html
<div id=1>
<?php Include "a.php?parameter=1" ?>
</div>
<div id=2>
<?php Include "a.php?parameter=2" ?>
</div>
档案a.php:
<? Php
b;
Function b {}
?>
调用a.html会产生错误:“无法在div 2中重新声明b()
”。原因很容易理解 - 但最有效的解决方法是什么?
答案 0 :(得分:3)
包含另一个PHP文件不会触发新的HTTP请求。您无法将参数传递给包含的文件。引号内的文本必须解析为磁盘上的文件,包括?parameter=1
部分。
如果要将参数传递给包含的文件,请记住当前范围可用于包含的代码。您可以为全局/局部变量赋值,然后在包含的文件中使用它们。
// run.php
<?php
$name = 'Bob';
include 'inc.php';
?>
// inc.php
<?php
echo "Hi, $name!\n";
?>
<强>更新强>
即使使用include
,也不能多次声明同一个功能。相反,请在页面顶部包含声明函数的文件一次。使用require_once
确保它只发生一次,如果找不到文件就会中断。然后,在需要函数效果的任何地方,在页面的脚本中调用它而不进行另一个包含。
// run.php
<?php require_once 'sayhi.php'; ?>
<div id="1">
<?php sayhi('Bob'); ?>
</div>
<div id="2">
<?php sayhi('Frank'); ?>
</div>
// sayhi.php
<?php
function sayhi($name) {
echo "Hi, $name!\n";
}
?>
这会创建所需的输出。
<div id="1">
Hi, Bob!
</div>
<div id="2">
Hi, Frank!
</div>
答案 1 :(得分:1)
当包含文件时,它包含的代码会继承该变量 包含发生的行的范围。任何可用的变量 在调用文件中的那一行将在被调用的内容中可用 文件,从那时起。但是,所有功能和类 在包含文件中定义的具有全局范围。
请查看有关include()功能的信息。函数b()不应该重新声明,因为它已经存在。如果您尝试修改设置/传递给函数的变量,那么您将包含使用相应变量的函数的参数。
答案 2 :(得分:1)
如果你想为文件分配参数,那么你可以做两件事而不是包括文件,
1)包含没有任何参数,并使用可为您执行操作的参数调用函数 2)不要在任何地方包含它,而是在你想使用exec或popen时执行它,并将你的参数传递为argv:)