【发布时间】:2011-07-12 15:48:54
【问题描述】:
我有大量用 PHP 编写的遗留代码,这些代码不是在任何特定框架上编写的,而是主要是老式风格(即内联)PHP。但是,我的大部分新代码都是在 Kohana 3.1.X 框架上编写的。尽管 Kohana 确实允许遗留代码和 Kohana 文件在同一个网站上共存,但我现在想将每个遗留代码文件包装为一个视图,并充分利用 Kohana 的 MVC 设计模式和 URL 重写。然而,我遇到的问题是我的遗留代码无法访问从视图本身(即遗留代码)中定义的全局变量,并且无法利用试图通过全局范围语句查看这些全局变量的内联函数。例如:
application/views/legacy.php
$gvar = 5;
function getadminsettings(){
global $gvar;
echo $gvar;
}
应用程序/类/控制器/myctrl.php
...
public function action_legacy() {
// call legacy.php as a view via View::factory()
}
...
由于我有这么多遗留代码,将所有这些遗留代码文件重构为真实视图是不切实际的。我如何将这些文件视为视图或像访问它们一样访问它们,以便我可以从现在开始在控制器中编写我的逻辑而不是内联(因此,遵循真正的 MVC 设计模式)然后绑定变量到这些旧文件?
我确实看过In PHP, how can I wrap procedural code in a class?,但这篇文章在这种情况下并不适用,因为我正在处理 Kohana 框架。
更新:
Kohana 似乎正在使用输出缓冲区,这就是它无法访问旧文件中的此类全局变量的原因。有没有人成功地在 Kohana 3.2 中获取访问全局变量的视图?
【问题讨论】:
标签: php model-view-controller kohana-3