Текущей ситуации:PHP: "Global" Включить
- я имею текущую версию моей MVC Framework, которая использует классы в качестве контроллеров.
- У меня есть некоторые «винтажные» модули от моего старый MVC Framework, который использует простые, плоские, включает в себя контроллеры.
Значительно упрощена, что означает:
Новая версия:
<?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» и к нему не может быть доступа.
Этого не было бы, если бы я мог заставить требование вести себя как «в глобальном масштабе», чтобы $ globalVar снова был доступен в глобальной области.
Итак: Есть ли способ достичь «require_global« или что-то подобное?
(Одним из решений для моей проблемы было бы изменить мои старые контроллеры, чтобы начать с кучи «глобальных» команд, но я бы предпочел решение, в котором мне не нужно менять такой старый код.)
(Примечание: Пожалуйста, не говорите мне, что GLOBALS - это плохо. Это полностью не соответствует сути этого вопроса. Просто примите, что это требование, чтобы сохранить старый код в более новой, более чистой среде.)
Я еще не знаю почему, но каким-то образом array_merge не работает в моем сценарии при слиянии массива «вручную» с работами foreach. – BlaM
хорошо, $ GLOBAL на самом деле не «нормальный» массив. Вернулся к версии foreach. – vartec