Php 如果文件存在,则包含在所有文件中

Php 如果文件存在,则包含在所有文件中,php,Php,我对PHP相当陌生,我想知道是否有可能将“if file exists then include”列出所有文件。我使用的是不同的HTML模板,其中一些模板不包含由PHP文件解释的代码 编辑:请向上投票和向下投票,因为我不知道该使用哪个答案。您可以使用“自动预结束”文件ini设置,在任何代码运行之前设置要包含的文件。如果您通过CGI使用PHP,您可以通过在运行脚本的目录中添加PHP.ini,然后添加 auto_prepend_file = ../prepend.php 。。在任何其他文件之前自动

我对PHP相当陌生,我想知道是否有可能将“if file exists then include”列出所有文件。我使用的是不同的HTML模板,其中一些模板不包含由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为我们提供了一些工具来测试文件是否存在

  • -说明文件名是否为常规文件

  • -检查文件或目录是否存在

  • 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。但您很快就会转向框架,希望如此。

    尝试以下方法:

    function include_if_exists($path) {
        if( @file_exists($path) && is_file($path) ) {
            include($path);
        }
    }
    
    include_if_exists("lib/mylibrary.php");
    
    //...
    

    您还可以使用自动加载器搜索类库文件,具体取决于您要完成的任务。请参见

    您想包括什么以及在哪里?我的主题系统有点倾斜。我的一些模板有页脚,有些没有,但我的PHP文件要求有页脚。我希望有一种方法,使我不会收到错误,即使我可能没有所有的文件。你可以看出这是一件急事。这是因为我想要实现的模板是我想要使用的旧备份,所以我可以用我的新模板修复错误。啊,你说它是用于模板制作的。我发布的解决方案更适合于库加载。我同意@Aadaam编写模板库的观点,但如果您的问题是HTML模板包含一些引用了未包含的类的PHP代码,那么自动加载就是您想要的。