【发布时间】:2010-06-09 14:13:56
【问题描述】:
我有一个非常古老的 php 应用程序(1999 年),在过去十年中一直在开发。此时应用程序开始显示它的年龄,所以我正在迁移到一个“新”框架,symfony 1.4。但由于该应用程序非常大,我无法立即执行此操作。所以我打算将旧应用程序包装到新的 symfony 应用程序中,并按功能转换功能。
这个过渡的第一步是让旧应用出现在新的 symfony 应用中。因此,我创建了“前端”应用程序,添加了一个“旧版”模块,将其设为默认主页,并将所有内容都放在了我的 index.php(所有页面都通过这个 index.php)中indexAction 的 indexSuccess.php 文件。我已经在“视图”中添加了代码,因为其中还有一些功能,而更改该设置将花费我比我想在旧应用上花费更多的时间。
不幸的是,我现在遇到了全局变量的问题。让我举个例子(我永远不会像这样制作这个寄存器功能,但确实如此,所以请看过去。
$session = new ps_session;
$demo = "this is a demo variable";
$session->register('demo');
在 ps_session 我有这个方法
public function register($var) {
global $$var;
$_SESSION [$var] = $$var;
}
所以它应该把 $demo 的内容放在一个名为“demo”的会话变量中。聪明的权利:) 无论如何,var_dumping 告诉我 $$var 是“null”,如果我在调用函数之前和之后 var_dump 填充了 $demo。没有 symfony 的完全相同的代码,它返回正确的内容。
我错过了什么?全球呼叫分布在这个庞大应用程序的所有区域,所以我真的不想切换到其他东西,所以我希望快速修复:)
也许相关,除了 index.php 内容之外的所有代码都在 frontend/lib/legacy/ 文件夹中,索引在 frontend/modules/legacy/ (如果我缺少一些范围问题)
【问题讨论】:
-
你是否一直使用相同的php版本?
-
是的,5.3.2 具有相同的 php 设置(register_globals on)
标签: symfony1 global-variables legacy