我正在使用 PHP 5.3 的 class_alias 来帮助处理我的 Symfony 1.4 (Doctrine) 表单。我使用单个操作来处理多个表单页面,但使用 switch 语句来选择要使用的表单类。
public function executeEdit(sfWebRequest $request) {
switch($request->getParameter('page')) {
case 'page-1':
class_alias('MyFormPage1Form', 'FormAlias');
break;
...
}
$this->form = new FormAlias($obj);
}
这在浏览网站时效果很好,但我的功能测试失败了,因为当一个页面被多次加载时,就像这样:
$browser->info('1 - Edit Form Page 1')->
get('/myforms/edit')->
with('response')->begin()->
isStatusCode(200)->
end()->
get('/myforms/edit')->
with('response')->begin()->
isStatusCode(200)->
end();
我收到对第二个请求的 500 响应,并出现以下错误:
最后一个请求引发了未捕获的异常 RuntimeException: PHP 在 /.../apps/frontend/modules/.../actions/actions.class.php 第 225 行发送了一个警告错误(无法重新声明类 FormAlias)
这使得测试表单提交(通常回发给自己)变得非常困难。
这大概是因为 Symfony 的测试器没有以同样的方式清除吞吐量。有没有办法“unalias”或以其他方式允许这种重新声明?