Zend 엔진 2.0의 새로운 객체 모델
앞서 작성된 "클래스를 사용해야하나?(부제:클래스를 이용한 모듈화 프로그래밍)"라는 글에서 언급했던 것과 같이 현재 Zend 엔진 1.0을 기반으로하는 PHP4에서 제공되는 객체 관련 기능들이 여러가지로 부족한 면이 많이 있었습니다.
이에 따라 www.zend.com에서는 개선된 객체 모델을 도입한 Zend 엔진 2.0이 개발 중에 있습니다. 2001년 11월에 발표된 Zend 엔진 2.0 설계 초안(Zend Engine 2.0 Design Draft)과 2002년 6월에 릴리즈된 Zend 엔진 2.0 알파2 버전(Alpha 2 of PHP w/ the Zend Engine 2 Now Available)에서 개선된 내용을 정리해 보면 대략 아래와 같이 세가지로 분류할 수 있습니다.
- 개선된 객체 모델(Revamped Object Model)
- 예외상황 처리(Exception Handling)
- 향상된 외부 지원 객체지향 APIs(Improved Interface with 3rd party OO APIs)
분류에 포함되지 않은 String offset syntax와 같은 문법 변경 사항들이 일부 있으나 변경된 내용을 살펴보면 새로운 객체 모델을 구현하기 위한 기술에 거의 집중되고 있음을 볼 수 있습니다. 이 문서에서는 개선된 객체 모델에 대하여 집중적으로 살펴보고자 합니다.
Zend 엔진 2.0에 추가된 주된 기능 중에서 예외상황 처리(exception handling) 및 자바 또는 닷넷과 같은 외부 기술에 관한 사항은 관련문서를 참조하기 바라며
외부 객체지향 APIs(COM 컴포넌트 또는 자바 객체)에 대하여는 OO Syntax Overloading 기술로 접근할 수 있도록 Zend 엔진 2.0를 개발하고 있으며 이 기술은 객체역참조(Object Dereferencing)라는 객체지향 개념을 통해 구현하고 있습니다.
Zend 엔진 2.0에서 지원하는 객체 특성을 살펴보면 아래 표와 같이 설계 초안에서 알파2 버전으로 넘어오면서 다중상속 특성이 빠진 반면 nested namespace 개념(nested 클래스, import 처리 등)이 추가되었습니다.
객체 특성 | PHP3 or Zend 엔진1.0 |
Zend 엔진 2.0 설계초안 |
Zend 엔진2.0 알파2 |
---|---|---|---|
객체 핸들 |
객체복사 |
객체참조 |
객체참조 |
static 멤버 변수 |
x |
o |
o |
private 멤버 변수 |
x |
o |
o |
단일화된 생성자 |
x |
o |
o |
소멸자 |
x |
o |
o |
객체 복제 |
N/A |
o |
o |
함수 반환 객체 역참조 |
x |
o |
o |
객체 삭제 |
x |
o |
o |
Nested 클래스 |
x |
x |
o |
클래스 상수 |
x |
x |
o |
다중 상속 |
x |
o |
x |
(o:포함됨, x:포함되지 않음, N/A:Non Applicable)
현재도 Zend 엔진 2.0의 모든 특성들에 대하여 www.zend.com 웹사이트와 메일링 리스트(engine2-subscribe@lists.zend.com)를 통해 계속 토론되어지는 과정에 있으므로 앞으로 발표될 Zend 엔진 2.0의 최종안에서는 새로운 특성들이 포함될 수도 있으며 반대로 현재 포함되어 있는 특성들이 제외될 수도 있습니다.
참고 자료
- Zend 엔진 2.0 설계 초안
- Zend 엔진 2.0 알파2 버전
- Zend 엔진 2.0 샘플 코드
'phpclass > 객체모델' 카테고리의 다른 글
{Zend 엔진 2.0 설계초안}06.소멸자 (0) | 2002.12.21 |
---|---|
{Zend 엔진 2.0 설계초안}05.단일화된 생성자 (0) | 2002.12.21 |
{Zend 엔진 2.0 설계초안}04.private 멤버 변수 (0) | 2002.12.21 |
{Zend 엔진 2.0 설계초안}03.static 멤버 변수 (0) | 2002.12.21 |
{Zend 엔진 2.0 설계초안}02.개선된 객체모델 (0) | 2002.12.21 |