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