2009-06-09 7 views
1

우리는 유행에 뒤 떨어지는 것처럼 전역을 사용하는 정말로 오래된 레거시 코드 기반을 가지고 있습니다. 거의 모든 페이지 간 통신은 전역과 세션 또는 둘 다를 통해 이루어집니다. 이 으로 변경 될 수 있지만 이상적으로는 내가 만지는 모든 것이 더 많은 버그를 일으킬 수 있으므로 그 중 하나를 만지기를 원하지 않습니다.젠드와 낡은 절차 코드를 섞음

어쨌든, 우리는 완전히 "zend"로 작성된 응용 프로그램에 새로운 "모듈"을 통합하고 있으며 정말 멋지고 모듈 형입니다. 내 목표는 젠드를 백본으로 실행하고 이전 레거시 코드를 zend 내에서 일종의 모듈/컨트롤러로 실행하고 컨트롤이 정상적으로 실행되면 원하는대로 수행하는 것입니다.

2 개의 문제는 내가 가진 :

  • 은 내가 (등, login.php, show.php) 기존 URL의를 사용하고 있음을 확인하고 특정 컨트롤러로 실행을 전달하는 젠드를 얻을 필요가;

  • 다른 응용 프로그램의 기능에 전체 응용 프로그램을 포함시키고 있으며 전역 범위에 나타나는 변수의 기본 동작을 전역 변수로 분리합니다. 즉이 변수는 이제이 메서드의 로컬 변수이므로 사용할 수 없습니다. 처음에는 그것들이 전역이라고 지정하지 않고서 보았습니다.

나는 그것이

건배 - P 듣고 드리겠습니다이 작업을 수행 할 수있는 다른 방법이 있다면, 난 당신이 Zend_Router를 사용할 수 있다고 생각 첫 번째 문제를 들어
크리스

답변

2

수업.

그러나 나는 개체 지향적 인 ZF 개념에 절차 적 응용 프로그램을 이식하는 것이 좋습니다.

나는 응용 프로그램을 다시 작성하거나 별도의 클래스를 느슨한 구성 요소로 사용합니다. ZF 작성자가 권장하는 것입니다.

+0

네는, 정말 응용 프로그램을 포팅 아니에요 - 난 그냥 ZF가있는 모듈을 결정하는 약간의 작업을 할 필요가 로드하는 경우와 그 일이 있다면 egacy 모듈을 사용하면 zend가 참여하는 것을 잊어 버리고 잊어 버릴 수 있습니다. 정상적인 모듈이라면 zend의 모든 이점을 누릴 수 있습니다. –

0

밝혀졌습니다. 나는 너무 야심적이었습니다.

새로운 "모듈"은 대부분 자바 스크립트이며 ZF의 대량으로 백업 된 약간의 PHP 컨트롤러 (CRUD)이고 실제로 포트가 JS 프론트 엔드였습니다. 백 엔드가 구현됩니다.

JS 프런트 엔드를 이식하고 이전과 비슷한 인터페이스를 제공하기로 결정했기 때문에 이제는 젠드에 대해 걱정할 필요가 없으며 레거시 앱의 일부 대체 기능을 코딩 할 필요가 없습니다.

예.

이상하게도 나는 차 한 잔하면서 설탕을 넣고 설탕을 넣었다. 숟가락을 컵으로 옮겨서 (설탕 용기에서 흘리고 코드를 다시 써서) 다시 흘려 보내는 대신에 컵 위와 설탕 단지를 제거하십시오 - 적은 양으로 같은 결과를 얻으십시오 그 설탕은 JS 였고 Jar는 큰 ZF 프레임 워크였습니다. -p

+0

:) 경험을 공유해 주셔서 감사합니다. –

1

내 코드는 APACHE rewrite rules입니다. 일반적으로 zend 프레임 워크는 다음 줄을 따라 다시 작성했습니다.

<Location /> 
     RewriteEngine On 
     RewriteCond %{REQUEST_FILENAME} -s [OR] 
     RewriteCond %{REQUEST_FILENAME} -l [OR] 
     RewriteCond %{REQUEST_FILENAME} -d 
     RewriteRule ^.*$ - [NC,L] 
     RewriteRule ^.*$ /index.php [NC,L] 
    </Location> 

대신 "index"를 변경하십시오.php "를"ZendFramework.php "와 같이 현재 사용하지 않는 것으로 바꾼다. (ZendFramework.php와 같은) 정상적인 내용을이 ZendFramework.php 파일에 넣어 라.

이제 서버는 여전히 모든 기존 서비스를 제공 할 것이다. 레거시 코드는 이전과 같지만 존재하지 않는 경로 (예 :/module/controller/action)를 Zend로 라우팅합니다. 기존 코드베이스에 따라 경로에 충돌이있을 수 있으므로이를 처리 할 때 .. 모듈/컨트롤러/actoions 및 사용자 정의 경로는 ZendFramework 모듈로 레거시 코드를 이동할 수 있습니다 시간이 지남에

 RewriteRule ^.*$ /ZendFramework.php [NC,L]