【发布时间】:2011-02-06 20:30:30
【问题描述】:
我有一个很大的函数,我希望只在需要时才加载它。所以我认为使用包含是要走的路。但我还需要几个支持函数——只在 go_do_it() 中使用。
如果它们在包含的文件中,我会收到重新声明错误。参见示例 A
如果我将支持函数放在 include_once 中,它可以正常工作,请参阅示例 B。
如果我对 func_1 代码使用 include_once,第二次调用会失败。
我很困惑为什么 include_once 会导致函数在第二次调用时失败,第二次似乎没有“看到”代码,但如果存在嵌套函数,它确实会“看到”它们。
示例 A:
<?php
/* main.php */
go_do_it();
go_do_it();
function go_do_it(){
include 'func_1.php';
}
?>
<?php
/* func_1.php */
echo '<br>Doing it';
nested_func()
function nested_func(){
echo ' in nest';
}
?>
示例 B:
<?php
/* main.php */
go_do_it();
go_do_it();
function go_do_it(){
include_once 'func_2.php';
include 'func_1.php';
}
?>
<?php
/* func_1.php */
echo '<br> - doing it';
nested_func();
?>
<?php
/* func_2.php */
function nested_func(){
echo ' in nest';
}
?>
【问题讨论】: