PHP 5.3의 class_alias를 사용하여 Symfony 1.4 (Doctrine) 양식을 처리하는 데 도움이됩니다. 단일 액션을 사용하여 여러 폼 페이지를 처리하지만 switch 문을 사용하여 사용할 폼 클래스를 선택합니다.기능 테스트에서 PHP의 class_alias를 사용할 때 클래스를 다시 선언 할 때의 문제
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 응답을 다음과 같은 오류가 표시됩니다.
last request threw an uncaught exception RuntimeException: PHP sent a warning error at /.../apps/frontend/modules/.../actions/actions.class.php line 225 (Cannot redeclare class FormAlias)
이렇게하면 양식 제출을 테스트하는 것이 일반적으로 어렵습니다.
아마도 이것은 Symfony의 테스터가 동일한 방식으로 처리량을 정리하지 않았기 때문일 수 있습니다. 이러한 종류의 재 선언을 'unalias'또는 다른 방식으로 허용하는 방법이 있습니까?
깔끔함.그것이 가능하다는 것을 몰랐습니다. class_alias가 다소 중복 된 것처럼 보입니다. 성능 차이가 있다고 가정합니다. – kenneth
class_alias는 별칭이 지정된 클래스 레코드를 유지해야하며 로컬 변수가 도입됩니다. 어떤 것이 더 많은 영향을 미치는지 모릅니다. 이유 때문에 class_alias가 5.3.0에 추가되어야하지만 하나는 생각할 수 없습니다. – Kwebble