現状を含める:PHP:「グローバル」
- 私はコントローラとしてのクラスを使用して、私のMVCフレームワークの現在のバージョンを持っています。
- 私はの古い MVCフレームワークのいくつかの "ヴィンテージ"モジュールを持っています。これは単純なフラットインクルードをコントローラとして使用しています。
多くのことを意味し簡素化:
新バージョン:
<?PHP
class blaController extends baseController {
private $intVar;
function dosomethingFunction() {
$this->intVar = 123;
$this->view('myView');
}
}
?>
旧バージョン:私は今するラッパーを記述しようとしている
<?PHP
$globalVar = 123;
// view "controllername" is automatically shown
?>
私の新しいMVCで古いコントローラを再利用することなく使用することができますすべてを書いてください。それに問題
- :(わずかなアイデアを取得しない実際のコードこれは非常に、非常に単純化している。。もう一度)
class wrapController extends baseController {
function dosomethingFunction() {
require 'old_dosomething.function.php';
$this->view('old_dosomething_view');
}
}
:そうするために、私は「ラッパー」のコントローラを持っていますアプローチは、以前のグローバル変数$ globalVarがメソッド "dosomethingFunction"の内部にしか存在せず、ビューからアクセスできないということです。
requireをグローバルスコープで動作させて、グローバルスコープ内で$ globalVarを再度使用できるようにすることはできません。
So:「require_global」などの何らかの方法がありますか?
(私の問題の解決策の1つは、古いコントローラを "グローバル"コマンドの束から始めるように変更することですが、古いコードをあまり変更する必要がないソリューションを好むでしょう。 )
(注:GLOBALSが悪いことを教えないでくださいそれは完全にこの質問のポイントを逃しただけで、新しい、クリーンな環境で作業して、いくつかの古いコードを維持するための要件であることを受け入れる)
。。。
私はまだわからないが、何らかの理由でarray_mergeが私のシナリオで動作しないのは、foreachで "手動で"配列をマージするときです。 – BlaM
まあ、$ GLOBALは本当に "普通の"配列ではありません。 foreachバージョンにロールバックされます。 – vartec