我有一个名为"config.php"的文件,其中包含一个名为的变量$unit_names.在类中,我有以下方法,它通过它的id返回单元名.我对表中的所有行使用此方法,但问题config.php仅包含在对方法的第一次调用中.下次通话会导致通知:undefined variable $unit_names...
如果我更换include_once的include通知消失.但为什么?include_once应该加载config.php文件.
public function get_unit_name($unit_id)
{
include_once("config.php");
return $unit_names[$unit_id];
}
Run Code Online (Sandbox Code Playgroud)
include_once不会加载指定的文件至少一次,它会加载它恰好一次!如果您第二次调用该函数,则该文件已包含在内,因此不会再次包含该文件,因此会显示错误消息.
这个想法是你使用include_once/ require_once当你包含包含函数或类定义的文件时,即如果它们被多次加载会产生错误的文件.如果可以加载文件两次或更多次,请始终使用include()而不是include_once().
改为考虑这样的事情(为了节省每次重新包含文件的成本):
private $unit_names = null;
public function get_unit_name($unit_id) {
if ($this->unit_names === null) {
include("config.php");
$this->unit_names = $unit_names;
}
return $this->unit_names[$unit_id];
}
Run Code Online (Sandbox Code Playgroud)