phpclass/객체모델2002. 12. 21. 14:42
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 처리 등)이 추가되었습니다.
< PHP의 객체지향 프로그래밍 특성 >
객체 특성 PHP3 or
Zend 엔진1.0
Zend 엔진 2.0
설계초안
Zend 엔진2.0
알파2

객체 핸들
revamped object model using object handles

객체복사

객체참조

객체참조

static 멤버 변수
static class member variables

x

o

o

private 멤버 변수
private member variables

x

o

o

단일화된 생성자
unified constructors

x

o

o

소멸자
destructors

x

o

o

객체 복제
object cloning

N/A

o

o

함수 반환 객체 역참조
dereferencing objects returned from functions

x

o

o

객체 삭제
forced deletion of objects

x

o

o

Nested 클래스
nested classes

x

x

o

클래스 상수
class constants

x

x

o

다중 상속
multiple Inheritance

x

o

x

(o:포함됨, x:포함되지 않음, N/A:Non Applicable)
현재도 Zend 엔진 2.0의 모든 특성들에 대하여 www.zend.com 웹사이트와 메일링 리스트(engine2-subscribe@lists.zend.com)를 통해 계속 토론되어지는 과정에 있으므로 앞으로 발표될 Zend 엔진 2.0의 최종안에서는 새로운 특성들이 포함될 수도 있으며 반대로 현재 포함되어 있는 특성들이 제외될 수도 있습니다.
참고 자료

Posted by 방글24