可选包含在PHP中

可选包含在PHP中,php,include,optional,Php,Include,Optional,我有一个带有常规配置的配置文件(在git repo中),还有一个覆盖配置属性的本地配置文件(在repo中被忽略)。现在,本地配置文件包含在配置文件的开头: include_once 'local_config.php'; 但我希望include是有条件的:仅当文件local_config.php实际存在时才执行。我可以做一个没有问题,但首先我需要检查文件是否存在。所以我尝试了get_include_path(),但它返回一个路径列表,我必须解析这个列表并检查每个路径 另一种选择是只调用incl

我有一个带有常规配置的配置文件(在git repo中),还有一个覆盖配置属性的本地配置文件(在repo中被忽略)。现在,本地配置文件包含在配置文件的开头:

include_once 'local_config.php';
但我希望include是有条件的:仅当文件local_config.php实际存在时才执行。我可以做一个没有问题,但首先我需要检查文件是否存在。所以我尝试了get_include_path(),但它返回一个路径列表,我必须解析这个列表并检查每个路径

另一种选择是只调用include_once()并抑制警告,但这会更加混乱。有没有更简单的方法在PHP中执行真正的可选包含?

使用
文件\u exists()
预定义的PHP函数,如下所示:

// Test if the file exists
if(file_exists('local_config.php')){
    // Include the file
    include('local_config.php');
}else{
    // Otherwise include the global config
    include('global_config.php');
}

此处的文档:

您只需使用文件\u exists()


如果您的PHP版本高于5.3.2,则可以使用
stream\u resolve\u include\u path($filename)


也许我在考虑简单,但如果(file_exists($path)){是您需要的。请参阅下面的评论:get_include_path()可能返回与当前目录不同的内容
,在这种情况下,我应该查看:
如果(file_exists($include_path.$path)){}
。我认为这还不够。我如何确定包含文件是否在当前目录中?可能是从另一个名为set_include_path()的文件到另一个目录中包含了常规配置。在这种情况下,我应该查看:
如果(文件_存在($include_path.$path)){.
在我的本地系统上,
include_path
中有几个不同的路径。然后用
foreach
语句循环遍历每个路径。你也可以使用PHP的
glob
函数列出目录中的文件。这有帮助吗?这正是我描述的,也是我极力避免的:)如果你e测试文件是否存在于多个目录中,最好和最有效的方法是使用
foreach
循环!您想让我写一个示例吗?