私は最近、php コードでクラスを自動ロードするために次のコードを実装しました。
function my_autoloader($class) {
include 'classes/class_' . $class . '.php';
}
spl_autoload_register('my_autoloader');
コードは、Web ページを生成する必要があるすべてのファイルの先頭に含まれるファイルに含まれています。そこで、コードから require_once 呼び出しを削除することにしました。次に例を示します。
require_once('classes/class_web_page.php');
おそらく上記からわかるように、私のサイトのさまざまなページ (オンライン コミュニティなので、フォーラム、ギャラリーなどがあります) はすべて web_page クラスを使用して、ページの見出しやメニューなどを生成します。コードのさまざまな部分が作成されます。 web_page オブジェクト、さまざまなパラメーターを設定して、必要なメニュー オプションなどを決定し、ページにコンテンツを与え、html を生成します。
class_web_page.php ファイルに変更を加えるまでは、すべて問題ないように見えました。変更はほとんどのサイトですぐに明らかになりました...ホームページを除く.
私はブラウザを更新し、オフの場合は再度オンに切り替えました:-) http://www.terragenesis.co.uk/ではなくhttp://www.terragenesis.co.uk/index.phpを呼び出してみましたが、停止しましたサーバーでApacheを再起動しました。このすべてにもかかわらず、変更はホームページに表示されませんでした。最後に、require_once の行を index.php に戻しました... すると、class_web_page.php で行った変更がホームページに表示されました。
そのため、オートローダーはキャッシュされた class_web_page.php のコピーをロードしているように見えますが、Apache を再起動しても、新しいバージョンを取得するよう説得することはできませんでした。他のページではなく、ホームページに対してこれを行う必要があるのはなぜですか...私にはわかりません。
他の誰かがこれを経験しましたか?オートローダのコードに何か問題がありましたか? どうすれば修正できますか...または、すべてのrequire_onceステートメントを元に戻す必要がありますか? :-(
私のサーバーには PHP バージョン 5.1.6 があります