후키라이브러리 – 2.개발

객체지향언어(Object Oriented Programming Language)

C++과 같은 컴파일러가 아닌 스크립트에서 객체지향언어의 클래스를 이용하는 것이 과연 효율적인지, 필요하여 사용한다면 서버의 성능을 필요이상으로 저하시키는 것이 아닌지 등등에 대한 우려로 보통 클래스 사용을 주저하게 됩니다.

그러나 하드웨어가 소프트웨어 발전 속도를 훨씬 앞지르고 있고, 서버 사이드 스크립트도 그 성능이 계속 향상될 것이며, 홈페이지 제작 프로젝트가 점점 다양해지고 대형화되어 가고 있는 시점에서 소프트웨어의 생산성은 상대적으로 점점 중요해 질 수밖에 없지 않을까요? 이러한 면에서 살펴보면 클래스의 사용은 꼭 필요하지 않나 하는 생각이 듭니다.

그러나 PHP에서 클래스를 사용할 때의 문제는 PHP 스크립트의 클래스가 C++이나 smalltalk와 같은 객체지향 프로그래밍 언어와 같이 클래스 구현이 충실하지 못하다는 것입니다. 실험해 본 바에 따르면 생성자(constructor) 실행이 불완전하고, 다중상속(multiple inheritance)과 같은 것을 지원하지 않는 것 같습니다. 자바에서도 다중상속을 지원하지 않기는 하지만 대신 인터페이스 기능이 있어 다중상속 역할을 대신할 수 있지요.

후키라이브러리 개발

“클래스 관리용 라이브러리”(이하 “후키라이브러리”)에서는 생성자 실행을 본래의 객체지향언어와 같은 개념을 도입하여 최상위 부모클래스 생성자로부터 최하위 파생클래스 생성자까지 순서대로, 소멸자는 그 반대의 순서로 실행하도록 했으며, 일반적인 다중상속뿐 아니라 동일한 조상클래스(ancestor class)를 가진 클래스의 다중상속도 지원할 수 있도록 작성되었습니다. 또한 생성된 모든 객체에서 공유할 수 있는 정적 데이터멤버를 지원합니다.

지원되는 기능

  1. 다중상속(multiple inheritance) 지원
  2. 동일한 조상클래스(ancestor class)를 가진 클래스의 다중상속 지원
  3. 최상위 클래스로부터 모든 파생클래스의 생성자(constructor)를 순차적으로 실행
  4. 최하위 클래스로부터 모든 부모클래스의 소멸자(destructor)를 순차적으로 실행
  5. 정적 데이터멤버(static data member) 지원

사용자 함수

  1. classdefine : 클래스 정의 함수
  2. newobject : 객체 생성 함수
  3. classchain : 클래스 상속관계 반환 함수

3개의 함수 중에 실제적으로 클래스를 관리하는데 사용되는 함수는 2개 뿐이며 나머지 한 개의 함수 classchain는 단지 클래스의 상속관계를 알고자 할 때 사용하게 되므로 개발단계에서만 사용하게 됩니다.

예약된 전역변수

후키라이브러리 내에서만 사용되는 전역변수입니다.

  • $_HWOOKY

답글 남기기