在您看来,您遇到的最令人惊讶,奇怪,奇怪或真正的"WTF"语言功能是什么?
每个答案只能有一个功能.
我有一个大功能,我希望只在需要时加载.所以我假设使用include是要走的路.但我需要几个支持函数 - 只在go_do_it()中使用.
如果它们在包含的文件中,我会收到重新声明错误.见例A.
如果我将支持函数放在include_once中它可以正常工作,请参见示例B.
如果我使用include_once作为func_1代码,则第二次调用失败.
我很困惑为什么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';
}
?>
Run Code Online (Sandbox Code Playgroud)
例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';
}
?>
Run Code Online (Sandbox Code Playgroud) 以下示例是否适用于PHP的require_once构造?
function foo( $param )
{
require_once "my_file.php" ;
//
// do something here
}
Run Code Online (Sandbox Code Playgroud)
或者在文件开头只有require_once构造更合适吗?
即使包含的文件仅在函数的上下文中有用,为了便于阅读和维护,是否最好包含在顶部?