私がこれをひどく説明し、それが意味をなさない場合、私は少し混乱しています。
PHPファイルの出力を特定の場所の別のファイルにインクルードできるようにしたいのですが、そのために、バッファーを使用してインクルード/リクワイアします。
if (file_exists(CUSTOM_PHP_DIR."/".$filename)) {
ob_start();
include(CUSTOM_PHP_DIR."/".$filename);
$html = ob_get_clean();
}
echo $html; //where I want the results to go.
問題は、上記をクラスのメソッドに含めたことです。したがって、ファイルにインクルードが含まれている場合、インクルードを実行$this
したクラスのプロパティとメソッドが含まれます。これにより、インクルードの内容が完全に壊れます。これは次のとおりです。
myClass::getSomethingFromDatabase();
myClassは、データベースクラスの拡張機能であり、一連の処理を実行するようにそれ自体を呼び出すことを理解してい$this
ます。$ thisは、ファイルを含む別のクラスへの参照になりました。
インクルードで使用するオブジェクトをインスタンス化することで、当面この問題を回避しました。これには、データベースのクレデンシャルが必要です。
$newObject = new myClass(DB_CREDENTIALS);
$newObject->getSomethingFromDatabase();
私はdefine
データベースのクレデンシャルを定数として取得する必要があり、それらをすばやく簡単に取得する必要がありましたが、それは避けたかったのです。静的呼び出しを機能させるためのより良い方法を見逃したことがありますか?