私が使用しているオートロード機能は次のとおりです。
function __autoload($moduleName)
{
//Logic to check file existence- include if exists else redirect to fallback page
}
他の引数を取らないのですか?autoload 関数内のいくつかの変数に基づいて、いくつかのロジックを実行したいと考えています。グローバル変数を使わずにそれを行うにはどうすればよいですか?
ありがとう
追加の詳細
これは __autoload() クラス内では不可能だと思いますが、例で説明しようとしています。
私は配列を持つmodules.configファイルを持っています:-
$viewClassMap = array('search_classes' => 'commonClassListings',
'search_packs' => 'commonPackListings',
);
上記の配列は、search_classes ビューの場合はクラス commonClassListings を含める必要があり、search_packs ビューの場合はクラス commonPackListings を含める必要があることを意味します。他のすべてのビューでは、デフォルトで commonDisplay クラスが含まれます
function __autoload($viewName,$viewClassMap)
{
if(in_array($viewName,$viewClassMap))
{
$viewTobeIncluded = $viewClassMap[$viewName];
include path/to/$viewTobeIncluded;
}
else
{
include path/to/commonDisplay;
}
}
ここで、__autoload 関数内のロジックを移動する必要があり、最初にロードするビューを計算してから、オートロードのみを呼び出す必要があると思います。これは、オートロードの目的でもあります (オブジェクトが開始されたクラス ファイルを含めるため)。
アップデート
私の autoload 関数は、実行時にオブジェクトを開始しようとしているビュー クラス内にありません (Blizz の例とは異なります)。一般的なフロントコントローラーに含まれる pageLoader.php ファイルで定義された一般的なオートロード関数があります。すべてのモジュールについて、ビュークラスは次のように開始されます
$view = new search_classes();
次に、共通の autoload 関数は、対応する親ビュー クラス (この場合は commonClassListings) が存在するかどうかをチェックする必要があります。このために、$viewClassMap
配列を autoload 関数に渡す必要があります。それは可能ですか?