私はPHPにかなり慣れていないので、リストされているすべてのファイルを「ファイルが存在する場合は含める」ことができるかどうか疑問に思っていました。私はさまざまな HTML テンプレートを使用していますが、その中には PHP ファイルによって解釈されるコードが含まれていないものもあります。
編集:どの回答を使用すればよいかわからないため、コメントに賛成票と反対票を投じてください。
私はPHPにかなり慣れていないので、リストされているすべてのファイルを「ファイルが存在する場合は含める」ことができるかどうか疑問に思っていました。私はさまざまな HTML テンプレートを使用していますが、その中には PHP ファイルによって解釈されるコードが含まれていないものもあります。
編集:どの回答を使用すればよいかわからないため、コメントに賛成票と反対票を投じてください。
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 の構成値は何もしません)。
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 が表示されるだけです。しかし、すぐにフレームワークに移行できることを願っています..
次のようなことを試してください:
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を参照してください。
PHP には、ファイルが存在するかどうかをテストするためのツールがいくつか用意されています。
is_file()
— ファイル名が通常のファイルかどうかを示します
file_exists()
— ファイルまたはディレクトリが存在するかどうかを確認します