如果文件存在则包含在所有文件上

时间:2012-07-26 22:24:32

标签: php

我对PHP很新,我想知道是否有可能将“if file exists then include”列出所有文件。我正在使用不同的HTML模板,其中一些不包含由PHP文件解释的代码。

编辑:请对评论进行投票和投票,因为我不知道使用哪个答案。

4 个答案:

答案 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)

include 语句与 require 语句的不同之处在于它只生成警告(而不是错误),可以使用 @ operator。

但是,我建议习惯于错误处理...在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为我们提供了一些测试文件是否存在的工具。

  1. is_file() - 判断文件名是否为常规文件

  2. 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