Текущая ситуация:
- У меня есть текущая версия моей 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 - это плохо. Он полностью не отвечает сути этого вопроса. Просто примите, что необходимо, чтобы какой-то старый код работал в новой, более чистой среде.)