Php 如果文件存在,则包含在所有文件中
我对PHP相当陌生,我想知道是否有可能将“if file exists then include”列出所有文件。我使用的是不同的HTML模板,其中一些模板不包含由PHP文件解释的代码Php 如果文件存在,则包含在所有文件中,php,Php,我对PHP相当陌生,我想知道是否有可能将“if file exists then include”列出所有文件。我使用的是不同的HTML模板,其中一些模板不包含由PHP文件解释的代码 编辑:请向上投票和向下投票,因为我不知道该使用哪个答案。您可以使用“自动预结束”文件ini设置,在任何代码运行之前设置要包含的文件。如果您通过CGI使用PHP,您可以通过在运行脚本的目录中添加PHP.ini,然后添加 auto_prepend_file = ../prepend.php 。。在任何其他文件之前自动
编辑:请向上投票和向下投票,因为我不知道该使用哪个答案。您可以使用“自动预结束”文件ini设置,在任何代码运行之前设置要包含的文件。如果您通过CGI使用PHP,您可以通过在运行脚本的目录中添加PHP.ini,然后添加
auto_prepend_file = ../prepend.php
。。在任何其他文件之前自动插入并解析../prepend.php
如果您使用的是常规PHP Apache模块,如果您的服务器允许重写.htaccess中的PHP值,则可以在.htaccess中设置它:
php_value auto_prepend_file ../prepend.php
如果要避免使用.htaccess文件,还可以在指令中设置配置
这确实需要将您正在谈论的文件解析为PHP(否则PHP的配置值将不起任何作用,因为PHP没有为请求加载或初始化)。PHP为我们提供了一些工具来测试文件是否存在
class Template {
private $_scriptPath=TEMPLATE_PATH;//comes from config.php
public function setScriptPath($scriptPath){
$this->_scriptPath=$scriptPath;
}
public function render($filename){
ob_start();
if(file_exists($this->_scriptPath.$filename)){
include($this->_scriptPath.$filename);
} else throw new TemplateNotFoundException();
return ob_get_clean();
}
}
像这样使用它
$v = new Template();
$v->someProperty="value";
$v->render('myview.php');
(尽管这对于不存在的属性仍然存在问题(有效,但会抛出警告),因此您需要所谓的神奇函数,如_set和_get)
至于在HTML中没有任何PHP代码,这对PHP来说并不重要。。。它将只显示HTML。但您很快就会转向框架,希望如此。尝试以下方法:
function include_if_exists($path) {
if( @file_exists($path) && is_file($path) ) {
include($path);
}
}
include_if_exists("lib/mylibrary.php");
//...
您还可以使用自动加载器搜索类库文件,具体取决于您要完成的任务。请参见您想包括什么以及在哪里?我的主题系统有点倾斜。我的一些模板有页脚,有些没有,但我的PHP文件要求有页脚。我希望有一种方法,使我不会收到错误,即使我可能没有所有的文件。你可以看出这是一件急事。这是因为我想要实现的模板是我想要使用的旧备份,所以我可以用我的新模板修复错误。啊,你说它是用于模板制作的。我发布的解决方案更适合于库加载。我同意@Aadaam编写模板库的观点,但如果您的问题是HTML模板包含一些引用了未包含的类的PHP代码,那么自动加载就是您想要的。