我对PHP还很陌生,我想知道是否可以在列出的所有文件中添加一个"如果文件存在,那么就包括"。我使用了不同的HTML模板,其中一些模板不包括PHP文件所解释的代码。
编辑:请对评论投赞成票和反对票,因为我不知道该用哪个答案。
您可以使用auto_prepend_file ini设置将文件设置为在任何代码运行之前包含。如果你通过CGI使用PHP,你可以通过在运行脚本的目录中添加PHP.ini,然后添加来设置它
auto_prepend_file = ../prepend.php
自动拥有/prepend.php在任何其他文件之前插入并解析。
如果你使用的是常规的PHP Apache模块,如果你的服务器允许在.htaccess:中重写PHP值,你可以在.htacccess中设置它
php_value auto_prepend_file ../prepend.php
如果你想避免使用.htaccess文件,你也可以在指令中设置配置。
这确实需要将您所谈论的文件解析为PHP(否则,PHP的配置值将不会起任何作用,因为PHP没有为请求加载或初始化)。
include语句与require声明的不同之处在于,它只生成一个警告(而不是错误),可以使用@运算符使其静音。
不过,我建议大家习惯错误处理。。。在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。但希望您能很快转向框架。。
PHP为我们提供了一些工具来测试文件是否存在。
-
is_file()
-告诉文件名是否为常规文件 -
file_exists()
—检查文件或目录是否存在
试试这样的东西:
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