객체지향언어(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

Posted by 방글24
PHP 스크립트에서 지원하는 객체지향언어의 클래스 기능을 보완하여 좀 더 편하게 클래스를 개발 및 관리를 할 수 있도록 클래스 관리를 위한 함수를 라이브러리 화하였습니다. 본인도 "후키라이브러리"를 이용하여 프로그램을 개발해 보니 나름대로 편리한 점이 많아 여러분과 공유하고자 이 자리를 마련했습니다.
버그 발견, 개선 요구, 기능 추가......
라이브러리에 버그가 있거나 새로이 개선되기를 바라는 점, 추가되기를 바라는 기능 등이 있으면 "Q&A 게시판"을 이용해 의견을 주세요:-)
후키라이브러리 저작권
파일명    : lib.hwooky.php
버전       : 0.1.0
작성일    : 2002.2.12
사용환경 : >= PHP 4.0.4
제작자    : 황우경(Wookyung Hwang) - 후키(hwooky)
전자우편 : hwooky@phpclass.com
홈페이지 : http://www.phpclass.com
사용권한 :
  본 라이브러리는 공개 라이브러리로 누구나 자유롭게 사용할 수  있으나, 연습용이 아닌 실무에 사용할 때는 혹시 발생할 지  모르는 문제점에 대해 충분히 테스트한 후에 사용하여 주시기  바랍니다. 본 라이브러리의 사용으로 인한 어떠한 피해에도  제작자는 책임을 질 수 없습니다.

Posted by 방글24