제공 :
한빛 네트워크저자 : Michael J. Ross
역자 : 진영학
원문 :
Using Zend Studio for PHP Programming편집기Zend Studio의 내장 편집기는 베테랑 코드 작성자들이 현대 프로그래머가 사용하는 편집기에서 제공하는 모든 기능을 가지고 있다(다중 문서 편집, 문단 텍스트 선택, 다중 되돌리기 및 다시 실행, 다중 행 탭 들여쓰기 및 내어 쓰기, 자동 매칭 브레이스 생성과 색지정, 스마트 들여쓰기와 내어 쓰기, 코드 폴딩, 그리고 코드 블록 커멘팅).
찾기 및 바꾸기는 Edit > Find/Replace를 통해 여러 파일, 지역 또는 원격으로, 텍스트에 대해 실행할 수 있다. 찾기 및 바꾸기는 정규 표현식을 지원한다. 또한 PHP 파일에서 문자열 찾기는 Search > Search를 통해 클래스, 함수 또는 상수 심지어 특정 작업창에서 제한되어질 수 있다. 이것은 여러분이 특정 파일에서 PHP 엘리먼트를 제거하거나 재명명하는 것을 가능하게 하며 문맥에 민감하여(context sensitive) 실수로 바꾸기 하는 것과 같은 문제를 피하도록 한다. 예를 들어, 주석에서 몇 개의 문자열과 매치하는 클래스 이름과 같은 것이다. 이러한 정제 작업은 코드 리팩토링을 수행할 때 특히 가치가 있을 수 있다. 또한 미리보기 기능은 하나 혹은 그 이상의 파일에서 안전하게 엘리먼트 발생을 변경하도록 한다. 와일드카드 *와 ?는 지원되나 분명 정규 표현식은 아니다.
편집기의 구문 강조와 기능 확인은 뛰어나고 모두 사용자 맞춤이 가능하다. 그러나 6.0버전에서 처음에 환경설정 트리(PHP > Editor > Syntax Coloring)내 어디에서 변경할 수 있는지 찾기가 어렵다. 여러분은 선호하는 공백 스타일(PHP > Editor > Formatter)을 명시할 수조차 있다. 코드 완성하기는 대부분의 프로그램에서 주로 발견되는 템플릿이라고 하는 코드 조각들의 형태에서 한 단계 더 나아간다. 여러분이 코드에 템플릿을 추가할 때 값과 함께 치환되어 템플릿은 “${name}”과 같은 저장소를 포함할 수 있다. 예를 들어, 기본적으로, 키 “cls”는 다음의 클래스 문장을 생성하는 템플릿을 추가하도록 한다. “class ${name} { function ${name}() { ${END} } }". 여러분은 자신의 템플릿을 생성할 수도 있으며 그것을 가용한 키에 할당할 수도 있다.
Zend Studio 편집기는 정말 멋지다. 보통 더 진보된 편집기와 통합개발도구에서 빠진 기능 - 기록 가능한 매크로, 키스트로크 반복, 사각 블록 문자열 선택, 그리고 문자열 결합과 환류 - 들이 몇 가지 있었다. 하지만, 단지 첫 번째 이유에 의해 프로그래머는 더 많은 제품을 사용할 것이다.
디버거만약 이전에 논의된 편집 기능들이 Zend Studio가 제공하는 모든 것이라면, jEdit과 같은 최고의 프로그래머를 위한 편집기면 충분할 것이다. 그러나 Zend Studio는 새로운 사용자가 통합개발도구를 전환하는데 충분할 정도의 그래픽 기반의 디버거이며 지금은 불필요한 ‘echo" 문장을 제거하도록 한다.
Zend Studio의 디버거는 step control과 중단점을 포함하는 비슷한 제품에서 보이는 강력한 기능을 제공한다. 특히 프로그래머로 하여금 항상 변수 이름을 일치하도록 요구하는 종류의 통합개발도구에 의한 접근에 반하거나 또는 개개의 엘리먼트를 보여주는 배열을 확장하거나, 범위 내에서 모든 변수의 자동화된 목록을 얻을 수 있어 고맙다. 또한, 더 많은 시간을 아낄 수 있는 문자열 길이가 보일 수 있다(특히 텍스트 처리와 비교를 하는 많은 양의 코드를 디버깅할 때).
또한 Zend Studio의 5.5와 6.0버전 모두는 내부 디버깅 그리고 원격 디버깅을 지원한다. 원격 기능은 원격 머신에 배치된 후에 하나 혹은 그 이상의 버그를 나타내는 로컬 환경에서 실행되는 상황일 때 유용하다.
만약 여러분이 Zend Studio 디버거를 처음 사용한다면 HTML 테이블에서 예시 자료를 나타내는 디버거 데모를 실행해 봄으로써 쉽게 사용할 수 있다. 편집 창에서 예시 PHP 코드를 실행해 보면서 여러분은 대응하는 결과를 보게 된다. 단계적으로 디버그 출력 창에서 두 가지 보기를 제공한다. 5.5버전에서는 “Text"(HTML 코드를 보여줌)와 “HTML"(웹 브라우저에서 어떻게 변환되는가?)이 있다. 더 좋은 이름은 첫 번째 보기의 경우 “HTML" 그리고 두 번째는 "Web"이었을 것이다. 6.0버전에서 "Debug Output"과 “Browser Output”으로 개선되었다.
디버거는 일반적으로 부드럽게 작동한다. 그러나 5.5버전에서 데모를 실행하는 동안, 나는 “Go to Cursor" 명령이 예상한 대로 완전히 동작하지 않는 것을 발견했다. 함수 호출 후에 오는 코드 라인 상의 편집 커서와 함께, “Go to Cursor” 명령을 선택하는 것은 디버거를 제대로 동작시키지 않았지만 대신 이전 함수로 가도록 하였다. 이것의 원인은 명백하지 않다. “Go to Cursor" 명령은 6.0버전에서는 보이지 않는다.
파일과 버전 관리코드의 양과 프로그래머의 수에 비례하여 소프트웨어 개발에 있어 가장 치명적인 함정의 하나는 소스 코드를 관리하는 것이다. 이것은 소스 코드를 구성하는 것을 포함하며 만들어진 컴포넌트는 빨리 발견되어질 수 있다. 그리고 새로운 컴포넌트는 최적의 위치에 두는 것이 좋다. 게다가, 코드에 저장하고 개정된 것을 추적해야만 한다.
Zend Studio는 환경에 관계없이 프로젝트를 생성하고 관리하는 도구(프로젝트 기반의 코드 찾기, 내장된 프로젝트, 코드, 오브젝트 브라우징)를 이용해서 이러한 것을 가능하게 하며, 이러한 것은 버전 관리 시스템과 관계되는 것이다. 프로젝트의 소스 코드는 CVS나 Subversion을 이용해서 추적이 가능하다. 두 버전 관리 시스템 모두 다른 색상을 이용하여 경로, 요구 메시지, 파일 상태의 텍스트 스타일을 명시할 수 있다.
Zend Studio의 두 버전 모두 두 파일 간의 색이 들어간 코드 차이를 표시할 수 있다. 갈래진 코드를 처리할 때, 똑같은 코드의 두 개 혹은 더 많은 버전 사이에 기능적인 차이를 결정하도록 시도할 때, 가능한 하나의 파일로 병합하는 것이 아주 유용하다.
로컬 혹인 원격 서버 사이의 파일 전송에는 5.5버전은 내장된 FTP 클라이언트(Files > Add FTP Server)가 사용되며 이것은 FTP와 SFTP 모두를 지원하고, 나중에 쓰이게 될 것을 대비하여 설정을 모두 저장합니다. 6.0버전은 Remote System Explorer(RSE) plugin을 통해 FTP와 SFTP를 제공한다(아직 테스트 해 보지는 않았다.).
코드 생성과 샘플바쁜 프로그래머는 적은 노력과 시간으로 코드 그 자체가 코드를 생성하는 것을 포함하여 더 많은 것을 얻기 위한 방법을 항상 찾고 있다. Zend Studio는 여러 가지 형태(코드 생성 마법사, 코드 조각, 코드 확장, 그리고 템플릿)로 이러한 칭찬받을 만한 원칙을 고수한다. 두 가지는 앞에서 살펴보았다.
Zend Studio의 마법사는 자동적으로 클래스, 인터페이스, 그리고 그들의 메서드를 위한 소스 코드를 자동적으로 생성시키기 위해 사용되어질 수 있다. 예를 들어, 여러분이 Zend Studio로 하여금 새로운 클래스나 인터페이스를 생성하도록 요청할 때, Zend Studio는 아이템의 특정 형태의 초기 구조를 즉시 삽입할 것이다. 간단히 코드의 어느 곳에서나 right-click하고 메뉴로부터 New > Class를 선택하라. 인스턴스 변수가 정의되는 클래스 내에서, getter and setter 메서드([그림 8]에서 보는 바와 같이)를 삽입할 것이다. 이와 같이 객체 지향 개발에서 지루한 단계를 자동화하는 것이다. Zend Studio의 제품 매니저인 Yossi Leon은 전화 통화에서 제품의 사용자들이 Zend Studio의 코드 생성 기능을 칭찬하고 있다고 밝혔다.
[그림 8] Zend Studio 6.0 - getters and setters 만들기
Zend Studio는 여러분 자신의 스크립트에 쉽게 삽입되도록 고안된 미리 작성된 코드 조각의 그룹들인 “Code Galleries"를 제공한다. Zend Studio는 기본으로 여러분 자신의 코드 조각을 추가할 수 있는 사용자 코드 갤러리를 제공하며, Zend 코드 갤러리는 Zend Network에 등록을 요구한다. 6.0버전에서 코드 조각은 코드 갤러리 보기(Window > Show View > Other > PHP Tools > Code Gallery)로부터 접근되어질 수 있다.
테스팅과 최적화하기애자일 소프트웨어 개발론에서 커지고 있는 관심과 함께 Zend Studio for Eclipse는 테스트 주도 개발 - 엄밀히 말하면 PHP 코드의 단위 테스트 - 을 더욱 쉽게 하고 있다. Zend Studio for Eclipse는 또한 Zend Studio의 사용자 인터페이스에서 PHPUnit으로 더 훌륭한 통합을 제공한다. 게다가, 마법사는 여러분이 작업하는 특정 클래스를 위한 뼈대를 생성할 수 있다. 결국 모든 테스트를 요약하여 볼 수 있으며 정확히 어디에서 문제가 발생하였는지에 대한 표시와 함께 어떠한 실패의 요약을 제공할 것이다.
[그림 9] Zend Studio 6.0 - 단위 테스팅
PHP 코드를 최적화하도록 시도할 때, 가장 가치 있는 도구중 하나는 코드의 각 부분에 의해 얼마만큼의 시간이 소모되고 있는가를 밝히는 어떤 종류의 프로파일러(profiler)이다. Zend Studio는 [그림 10]과 같은 내장된 프로파일러가 있다.
[그림 10] Zend Studio 6.0 - 프로파일러
브라우저 툴바Zend Studio의 설치 과정 동안 웹 브라우저에 Zend Studio 툴바가 설치되도록 선택할 수 있었다. 이 때 두 가지의 지원되는 브라우저는 파이어폭스와 인터넷 익스플로러이다(그림 11).
[그림 11] Zend Studio 6.0 - 파이어폭스 툴바
첫 번째 아이콘은 Zend Studio를 시작한다. 두 번째는 현재 브라우저에서 열린 페이지의 디버깅을 시작한다. 만약 Zend Studio가 아직 실행되고 있지 않다면 Zend Studio를 시작하도록 한다. 불행히도 제품이 C:Program FilesZendZendStudioClient-5.0.0bin.에 설치되었다.
[그림 12] Zend Studio 6.0 - 브라우저 툴바 에러 메시지
“Extra Stuff > Preferences"는 Zend Studio가 아니라 브라우저 툴바 그 자체에 있는 메뉴 아이템을 참조한다. 환경 설정을 수정하기를 원하며 프로그램에서 찾는 사용자는 찾을 수가 없을 것인데 분명 온라인 도움 정보(online help information)에서 조차 언급되어 있지 않다.
세 번째 아이콘은 현재 페이지, 다음 페이지, 현재 사이트상의 모든 폼들을 디버깅하기 위한 드롭다운 메뉴이다. 처음에 툴바에서 모든 다섯 개의 아이콘 중에서 세 번째 아이콘만 이름이 없어서 이상해 보였다. 그러나 세 번째 아이콘의 논리적 이름은 이미 두 번째 아이콘에 의해 사용되어진 “Debug"가 될 것이다. 이것은 두 개의 메뉴가 아마 하나로 합쳐져야 한다는 것을 말한다.
네 번째 아이콘은 현재 페이지를 프로파일하는 것이다. Zend Studio의 환경 설정을 수정하고 난 후조차도 이것과 두 번째 아이콘은 예상한대로 작동하지 않았다.
마지막 아이콘인 “Extra Stuff"는 Zend와 비(非)Zend PHP 사이트의 링크와 툴바 설정을 포함한다. 그래서 메뉴의 더 좋은 이름은 “Resources"가 될 것이다.
파이어폭스 그 자체와 같이 툴바는 또한 Zend.com 사이트, Zend Knowledge base, PHP.net, 그리고 구글을 통한 전체 웹 검색과 같은 내장된 검색 기능을 가진다.
Zend FrameworkPHP 프로젝트들은 점점 더 Zend 프레임워크를 포함하여 오픈 소스 프레임워크를 기반으로 만들어지고 있다. Zend Studio는 Zend 프레임워크 프로젝트 디렉터리의 생성을 쉽게 하는 등 Zend 프레임워크를 위한 지원을 넓히고 있다. 그것은 제품의 Eclipse 버전에 내장되어 있으며 5.5.1의 출시와 더불어 5.5버전에도 추가될 것이다.
[그림 13] Zend Studio 6.0 - Zend 프레임워크
지원대부분의 오픈 소스 통합개발도구들은 보통 쓸모없는 문서들을 긁어모은 것을 사용자에게 보라고 하거나 아주 적은 트래픽을 가진 포럼을 운영하는 등 적절치 못한 지원으로 사용자가 고통을 겪게 한다. 반면에 Zend Studio는 도움이 될 만한 적절하고 충분한 양의 여러 가지 자원에 의해 지원이 되고 있다. 내장된 도움 정보는 주제가 넓고 완전히 인덱스화 되어 있으며 검색어의 하이라이팅과 함께 full text 검색을 제공한다. 도움 정보는 또한 이전에 논의된 환경 설정 옵션을 제한하는 것에 대해 필터링 기능을 가지고 있다. 도움말을 필터 하는 기능은 새로운 사용자가 빠르게 제품에 적응하는데 큰 도움이 될 것 같다.
Zend의 지원과 관련된 웹 페이지는 knowledge base, 포럼, FAQ를 제공한다. Resource 페이지는 출시 정보, 사용자 가이드, 설치 가이드, 데이터시트, 빠른 시작 가이드, 그리고 공식 Keymap으로 가는 링크를 가지고 있다. 여러 가지 도움이 되는 6.0버전의 비디오 자료는 Zend의 데모 비디오 페이지에서 찾을 수 있다.
게다가 인증 받은 사용자는 Zend사의 Technical Support Team에 구입 정보를 제출함으로써 전문기술 지원을 온라인으로 받을 수 있다.
결론Zend Studio, 특히 Eclipse 버전은 이 기사에서 살펴본 것보다 아주 많은 기능을 가지고 있다. 여기서 논의되지 못한 것은 코드 리팩토링, 데이터베이스 도구, 작업 세트, Zend Guard와 같은 외부 Zend 도구와의 통합 등 내장된 도구이다. 관심 있는 독자들은 자신들이 테스트해 볼 수 있을 것이고 개발에 얼마나 가치를 더할 수 있을지 확인해 볼 수 있다.
Zend Studio가 가지는 한 가지 장점은 비슷한 PHP 통합개발도구에는 없는 내장된 PHP 인터프리터가 있는 것이다. 그 결과로, 여러분은 통합개발도구에게 컴퓨터상에 실행할 수 있는 PHP가 어디에 있는지 알리는 설치 장애물을 피할 수 있다. 이것은 사소해 보일 수도 있다. 그러나 내가 테스트한 메이저급 비(非)Zend 통합개발도구는 완벽하게 실행되는 PHP 파일을 실행하지 못하였고, 그 통합개발도구는 쓸모가 없어졌다. Zend Studio의 경우에는 내장된 Zend 엔진을 가지고 있으며 5.5와 6.0버전이 모두 PHP4와 PHP5를 지원한다. 6.0버전은 더 사용자 맞춤이 가능하며 원한다면 심지어 여러분이 자신이 사용하고 싶은 인터프리터를 할당할 수도 있다.
작은 문제들과 위에서 언급한 몇 가지를 제외하고, Zend Studio는 가능한 고통 없이 개발하는 것을 원하는 프로그래머와 얼마만큼 Zend Studio가 능력을 가졌는지 배우기 위해 시간과 노력을 기꺼이 투자할 PHP 프로그래머에게 강력하고 인상적이며 잠재력이 풍부한 가치 있는 통합개발도구이다. PHP 애플리케이션을 개발하는 개인과 팀에게 Zend Studio를 강력하게 추천한다.
저자 Michael J. Ross는 웹 컨설턴트, 프리랜서 작가이자 PristinePlanet.com의 뉴스레터 편집자입니다.