現狀: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將再次在全局範圍內可用,情況並非如此。
所以:有沒有辦法實現「require_global」或類似的東西? (我的問題的一個解決方案是修改我的舊控制器以一堆「全局」命令開始,但我更喜歡一個解決方案,我不必更改那麼多舊代碼。 )
(請注意:請不要告訴我GLOBALS是不好的,它完全沒有提到這個問題,只是認爲這是保持一些舊代碼在更新,更清潔的環境中工作的必要條件。)
我還不確定爲什麼,但以某種方式array_merge不工作在我的方案,而手動合併數組與foreach作品。 – BlaM 2009-04-15 15:15:20
好吧,$ GLOBAL並不是真正的「正常」數組。回滾到每個版本。 – vartec 2009-04-15 15:22:03