standalone.php
ブラウザから直接、独自のスクリプトとして実行することを意図したファイルがあります。関数、クラスを定義し、他のファイルを含めます。直接呼び出すと正常に動作します。
次のようなコードが含まれています。
$DB = new Database(DB_DATABASE, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_SERVER, '', true);
function DB() { global $DB; return $DB; }
単独で実行すると、$DB はグローバル名前空間で定義され、オブジェクトを返す関数はグローバル $DB オブジェクトを取得します。繰り返しますが、これは機能します。
問題は、ブラウザーから呼び出される別のファイルがあり、sometimesInvoker.php
場合によっては、standalone.php を含めて、standalone.php
直接呼び出されたかのようにブラウザーに出力する必要があることです。リダイレクトは使用できず、standalone.php
URL 経由で含めることはできません。
のコードsometimesInvoker.php
は次のとおりです。
LoadPage();
function LoadPage(){
include standalone.php;
}
したがって、階層は次のようになります。
Global name space / sometimesInvoker.php
LoadPage() function
standalone.php - thinks its global but it isn't
$DB - declared intending to be global but is actually a variable inside LoadPage() function?
function DB() - calls global DB and looks inside sometimesInvoker.php for a $DB var which isn't there, should be going up one level to LoadPage() function and grabbing that var.
それで問題が発生しましたが、どうすれば解決できますか?次のレベルアップがグローバルかどうかに関係なく、関数が 1 レベル上の変数を取得する方法が必要です。何か案は?