PHPでは、親サイト内でどの子サイトが選択されているかに基づいてオートローダーを設定する機能があります。PHP - 自動ロードと宣言されたクラスをリセットする
オートローダーのリセットは、spl_autoload_unregister
機能で優れています。
しかし、私が気づくのは、子サイトの前にすでに開始されていたクラスファイルをロードするときに、オートローダーをリセットした後でもこの '古い'クラスファイルが使用されていることです。
例:
親サイトの負荷
c:\parent\site\RouterClass
からexample\namespace\RouterClass
その後、私はすべて自動ローダーをリセットし、子サイトを開始し、子サイトの正しい自動ローダーを設定します。
子サイトはexample\namespace\RouterClass
をロードしますが、このファイルを新しいオートローダー経由でc:\child\site\RouterClass
から取得する代わりに、親サイトで定義された古いファイルからクラスを取得します。
私は機能を経由して登録されたクラスを参照してください。
get_declared_classes()
をしかし、私は、この変数リストをリセットすることはできませんよ。このクラスキャッシュのリセットが可能な場合、PHPはRouterClass
の新しい検索を開始し、子サイトの自動ローダーをチェックして見つけます。
runkit_method_redefine
の第2のオプションをチェックしましたが、runkit_class_redefine
のようなクラスでは類似の機能はありません。
宣言されたクラスリストをリセットする方法を知っている人はいますか?または、子サイトのすべての名前空間の名前を変更せずに上記を達成する方法。
あなたにはファイルが1つ含まれています。そのファイルは含まれています(duh)。あなたは何をする必要があり、なぜですか? – Federkun
これで、コード内のコンテキストから変更し、フレームワークv1の1つのコンテキストとフレームワークv2の他のコンテキストで作業できます。 – PeterH