У меня есть большое количество унаследованного кода, написанного на PHP, который не был написан на какой-либо конкретной среде, скорее это в основном стиль старой школы (т.е. встроенный) PHP.Тем не менее, большая часть моего нового кода написана на платформе Kohana 3.1.X.Хотя Kohana допускает сосуществование как унаследованного кода, так и файлов Kohana на одном и том же веб-сайте, я хотел бы теперь обернуть каждый файл унаследованного кода в виде представления и в полной мере использовать преимущества шаблона проектирования MVC Kohana и перезаписи URL.Тем не менее, я сталкиваюсь с проблемами из-за того, что мой унаследованный код не может получить доступ к глобальным переменным, определенным из самого представления (то есть унаследованного кода), и не в состоянии использовать встроенные функции, которые пытаются увидеть эти глобальные переменные через оператор глобальной области видимости.Например:
application / views / legacy.php
$gvar = 5;
function getadminsettings(){
global $gvar;
echo $gvar;
}
application / classes / controller / myctrl.php
...
public function action_legacy() {
// call legacy.php as a view via View::factory()
}
...
Поскольку у меня так много устаревшего кода, нецелесообразно реорганизовать все эти устаревшие файлы кода в истинные представления.Как я могу рассматривать эти файлы как представления или обращаться к ним, как если бы они были похожими на представления, так что теперь я могу писать свою логику в контроллере, а не в строке (таким образом, следуя истинному шаблону проектирования MVC), а затем связывать переменныек этим устаревшим файлам?
Я смотрел на В PHP, как я могу обернуть процедурный код в классе? , но этот пост не работает в этом случае, потому что я имею дело скаркас Kohana.
Обновление:
Кажется, что Kohana использует выходной буфер, и поэтому он не может получить доступ к таким глобальным переменным в устаревших файлах.Кому-нибудь удалось получить представление в Kohana 3.2 для доступа к глобальным переменным?