我对PHP很新,我想知道是否有可能将“if file exists then include”列出所有文件。我正在使用不同的HTML模板,其中一些不包含由PHP文件解释的代码。
编辑:请对评论进行投票和投票,因为我不知道使用哪个答案。
答案 0 :(得分:1)
您可以使用auto_prepend_file 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未加载或初始化请求)。
答案 1 :(得分:1)
但是,我建议习惯于错误处理...在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。但是你很快就会转向框架......
答案 2 :(得分:0)
PHP为我们提供了一些测试文件是否存在的工具。
is_file()
- 判断文件名是否为常规文件
file_exists()
- 检查文件或目录是否存在
答案 3 :(得分:0)
尝试这样的事情:
function include_if_exists($path) {
if( @file_exists($path) && is_file($path) ) {
include($path);
}
}
include_if_exists("lib/mylibrary.php");
//...
您还可以使用自动加载器搜索类库文件,具体取决于您要完成的操作。见http://us2.php.net/manual/en/language.oop5.autoload.php