0

私はPHPにかなり慣れていないので、リストされているすべてのファイルを「ファイルが存在する場合は含める」ことができるかどうか疑問に思っていました。私はさまざまな HTML テンプレートを使用していますが、その中には PHP ファイルによって解釈されるコードが含まれていないものもあります。

編集:どの回答を使用すればよいかわからないため、コメントに賛成票と反対票を投じてください。

4

4 に答える 4

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 の構成値は何もしません)。

于 2012-07-26T22:29:38.860 に答える
1

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 が表示されるだけです。しかし、すぐにフレームワークに移行できることを願っています..

于 2012-07-26T22:32:32.503 に答える
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を参照してください。

于 2012-07-26T22:33:28.880 に答える
0

PHP には、ファイルが存在するかどうかをテストするためのツールがいくつか用意されています。

  1. is_file()— ファイル名が通常のファイルかどうかを示します

  2. file_exists()— ファイルまたはディレクトリが存在するかどうかを確認します

于 2012-07-26T22:30:04.433 に答える