저자: Joao Prado Maia, 역 이호재
PEAR가 뭔가요? 어째서 중요하게 살펴봐야 하나요?
PEAR 프로젝트는 펄의 CPAN 자료모음에 있는 것과 비슷한 도구을 만들기 위해 스티크 바켄(Stig S. Bakken)이 시작했습니다. 이 프로젝트의 주요 목적은 PHP 확장과 라이브러리 코드의 저장소를 만드는 것입니다. 그리고 이 프로젝트의 가장 야심적인 목표는 개발자가 코드를 작성할 때 이식성과 재사용성을 갖출 수 있도록 표준을 정하는 것입니다.
이 프로젝트와 관련된 문서가 인터넷에 나타나기 시작한 것으로 보아 확실히 유명해졌다는 것을 알 수 있습니다. 몇몇 초기 문서는 PHP 공식 매뉴얼에 이미 포함되었고 앞으로도 더 많은 것들이 추가될 것입니다.
PEAR는 현재 진행중인 프로젝트이지만 머지않아 매우 성장할 것으로 기대됩니다. PEAR installer와
PEAR 사이트는 그 발전 가능성을 보여주는 예입니다. 메인 PHP 코어 개발자 메일링 리스트에서는 PHP 차기 버전에서 PEAR를 사용하자는 것과 관련된 많은 이야기들이 오고가고 있습니다. 여기에는 증가하는 C 확장을 지원하기 위해서 PEAR를 사용하자는 의견과 PHP 확장을 다운받고 설치하는 방법으로써 PEAR installer를 사용하자는 의견 등이 있습니다.
PEAR는 PHP 라이브러리 코드를 제외시켜놓더라도 오늘날 PHP에서 사용할 수 있는 가장 깨끗하고 잘 디자인된 코드로 간주되고 있습니다. 가장 유명한 패키지 중의 하나는 바로 데이터베이스 추상화 라이브러리인 PEAR::DB입니다. 바켄은 현재 메인 클래스와 함수를 C 확장으로 포팅하는 작업을 하고 있습니다. 따라서 이 패키지가 가능한 한 빠르게 동작할 수 있을 것입니다.
이 새로운 프로젝트는 확실히 머지않아 PHP 주요 특징 중 하나가 될 것입니다. 이 프로젝트를 통해 개발자는 PEAR 사이트를 통한 코드 공유를 할 수 있으며 사용자는 PHP 코드 확장과 라이브러리를 다운로드해서 설치할 수 있습니다.
PEAR 맛보기
이미 앞에서 언급했듯이 PEAR는 계속해서 진화하고 발전하고 있습니다. 물론 지금도 이미 많은 수의 패키지가 사용되고 있습니다. 이중에서 가장 유명한 패키지는 PEAR::DB로 개발자는 데이터베이스 관련 코딩을 할 때 다른 데이터베이스 서버에서 수정하지 않고 사용할 수 있는 코드를 작성할 수 있도록 해줍니다. 예를 들면 개발자가 테이블에 엔트리를 넣는 스크립트를 하나 작성했을 때 이 하나의 스크립트는 MySQL, PostgreSQL, 오라클에서 모두 사용할 수 있습니다.
따라서 아래의 예제는 다른 데이터베이스 서버에서도 모두 사용될 수 있습니다.
"mysql",
"hostspec" => "localhost",
"database" => "test_db",
"username" => "test_user",
"password" => "test_password"
);
$dbh = DB::connect($dsn);
$stmt = "SELECT id, name FROM examples ORDER BY id";
$result = $dbh->simpleQuery($stmt, DB_FETCHMODE_ASSOC);
if ($dbh->numRows($result) > 0) {
$data = (object) $dbh->fetchRow($result, DB_FETCHMODE_ASSOC);
echo "id => $data->id
\n";
echo "name => $data->name
\n";
}
?>
이 예제는 코드가 PEAR::DB와 같이 추상화된 라이브러리를 사용했을 때 어떻게 쓰이는지를 보여주는 간단한 예제입니다.
최근 PHP 메뉴얼에 PEAR를 다루는 새로운 챕터가 추가되었습니다만, 전체 PEAR 라이브러리가 PHP 메뉴얼에 실리거나 PEAR 패키지를 위한 새로운 메뉴얼을 작성할지는 아직 확실하지 않습니다.
설치 절차
PEAR를 설치하는 것은 실제로는 아주 간단한 일입니다. 필자는 CVS 버전의 PEAR를 설치하는 방법에 대해 설명할 것입니다. CVS 버전을 사용하는 이유는 PEAR 라이브러리가 매우 빈번히 변화하고 있기 때문입니다.
주의: PEAR 내부 저장 시스템은 앞으로 바뀔 가능성이 있습니다. 현재 PEAR 패키지와 라이브러리는 PHP와 같은 CVS 트리에 저장되는데, 이는 PHP 메인 저장소 및 개발자와 PEAR 자체의 저장소를 관리하는데 어려움이 따르기 때문에 개발자를 관리하는 것 또한 어렵습니다. 가까운 미래에 PEAR는 고유의 모듈/트리로 분리될 것입니다. 이 모듈은 이미 존재합니다만 대부분의 패키지는 아직도 예전 장소에 있습니다.
CVS에서 PHP 설치하기
만약 CVS에 대해서 한번도 들어본 적이 없다면
관련 문서를 참조하기 바랍니다. CVS는 사용하기 어려운 기술은 아니지만 친숙해지는 데는 약간의 시간이 필요합니다.
이미 여러분이 사용하는 컴퓨터에 표준 CVS 클라이언트가 제대로 설치되어 있다는 가정 하에 다음과 같은 절차를 수행해 줍니다.
1. 터미널 윈도우(rxvt, xterm 등)을 실행합니다.
2. 다음과 같은 명령어를 입력합니다.
cvs -z3 -d :pserver:cvsread@cvs.php.net:/repository login
Password: [여기서 비밀번호로 phpfi를 입력합니다.]
cvs -z3 -d :pserver:cvsread@cvs.php.net:/repository co php4
[php4라는 새로운 디렉토리를 생성합니다.]
cd php4
cvs -z3 -d :pserver:cvsread@cvs.zend.com:/repository login
Password: [여기서 비밀번호로 zend를 입력합니다.]
cvs -z3 -d :pserver:cvsread@cvs.zend.com:/repository co Zend TSRM
[이는 "php4" 디렉토리 밑에 "Zend"와 "TSRM"이라는 새로운 디렉토리를 생성할 것입니다.]
./buildconf
이게 여러분이 해야 할 작업의 전부입니다.
buildconf를 실행함으로써 PHP 옵션을 설정하는 표준 설정 스크립트를 만들 수 있습니다. 일반적인 설치과정에서 PEAR는
/usr/local/lib/php 디렉토리에 자동으로 설치됩니다. 물론 수동으로 설치할 수도 있으며 이는
php4/pear 디렉토리로 이동한 후 수퍼유저 권한으로
make install-su를 실행하면 됩니다.
이 외에도
php.ini 파일에 있는
include_path를 설정하는 부분에 PEAR 루트 디렉토리를 추가해야 합니다. 기본 디렉토리는
/usr/local/lib/php 입니다만 설정시 수동으로 다른 곳을 지정했다면 그 곳을 추가해 주어야 합니다.
PEAR 시작하기
PEAR 패키지는 데이터베이스 추상화 레이어에서 출력 캐시 시스템까지 그 영역이 다양합니다. 즉 PEAR는 단순한 라이브러리가 아닌 이식 가능하면서도 깔끔한 PHP 코드를 작성하는 새로운 표준입니다. 따라서 PEAR 초보자가 해야 할 가장 중요한 작업 중의 하나는 PHP 메뉴얼에 나와있는 코딩 표준을 읽는 것입니다.
이제, PEAR::DB를 사용하는 방법과 관련된 팁 몇 가지를 소개하려고 합니다. 왜냐하면 사람들이 많이 사용하는 PEAR 패키지중 하나가 바로 PEAR::DB이기 때문입니다. 여러분은 다음과 같은 절차를 통해 PEAR::DB를 사용하는 예제와 도움을 얻을 수 있습니다.
- 궁금해 하는 것에 대한 답을 찾길 원한다면 PEAR-DEV나 PEAR-GENERAL의 MARC를 검색해보기 바랍니다.
- PEAR 소스 코드와 함께 제공되는 유닛테스트(unit-test) 스크립트를 읽어보시기 바랍니다. 이 스크립트는 PHP CVS 소스코드가 있는 디렉토리에 있는데 보통 /home/jpm/php4/pear/DB/tests/ 입니다.
- Tomas Cox의 훌륭한 PEAR::DB 튜토리얼을 살펴보기 바랍니다.
필자는 이 기사가 모호한 면이 있는 PEAR 라이브러리에 한 가닥 빛이 될 수 있기를 희망합니다. 또한 PHP 커뮤니티에서 개발에 있어 여러분에게 유용한 기초지식을 제공했기를 희망합니다.
자 이제 프로그래밍을 즐기러 갑시다~!
Joao Prado Maia는 휴스턴에 살고 있는 웹 개발자입니다. 4년 이상 웹 기반의 애플리케이션을 개발했으며 새로운 기술과 프로그래밍 언어 배우는 것을 아주 좋아합니다.