레지스트리


Application은 레지스트리 클래스를 초기화 하고 관련 몇가지 클래스의 인스턴스를 생성하여 등록하게 됩니다.

레지스트리 기능


프레임이 동작을 하면서 일부 객체들은 중복생성될 수도 있습니다. 중복이 어떤 경우에는 유용하지만, 유일해야 하는 경우도 있습니다. 이를 위하여 싱글턴 패턴을 적용하여 객체의 유니크를 보장합니다.

또한 생성되는 객체의 메모리 낭비를 줄이기 위해서 플라이라이트 패턴도 적용을 하였습니다. 대표적으로 프레임워크에서 시용되는 레지스트리 기능 입니다.

필요한 객체가 있을 경우 실시간으로 생성하여 사용합니다. 또한 재사용을 위해서 레지스트리에 저장 재사용 합니다.

약간의 코딩과 개발을 할줄 아는 사람이라면, 한두번 홈페이지 개발을 해보았을 것입니다. 하지만 막상 홈페이지를 만들려고 하면 만만하지 않습니다.

기존 프레임웍은 너무 무겁고. 스스로 코딩하기에는 좀 부담스러운것이 홈페이지 입니다. 더욱이 초보자들을 위한 관리툴 같은 것은 제한적이고. 사용하기에는 번거롭운 부분이 많습니다.

개발자 답게 콘솔 모드에서 간단하게 코드잡업을 하면서 쉽게 사이트를 만드는 방법은 없을까? 이러한 고민들을 묶어서 지니 프레임워크를 시작합니다.

아직 초기라 기능이 부족한 점도 많이 있지만, 이러한 부족함은 약간의 개발능력이 있는 사용자들에게 위임을 합니다. 또한 만들어주신 기능을 공유해 주시면, 더 많은 사용자들에데 도움을 줄 수 있을 것입니다.

또한 필자는 지니 프레임워크에 기능을 추가 할수 있도록 상세한 설명을 가지고 있는 책을 집필 제공합니다.

레지스트리 클래스


레지스트리 클래스는 싱글턴 패턴 방식으로 제작이 되어 있습니다. 싱글톤 패턴은 시스템에서 인스턴스를 한번만 생성이 가능하도록 제한하는 패턴입니다.

만일 시스템에서 레지스트리 인스턴스를 여러개를 만들어 사용을 한다고 하면 많은 혼돈이 발생될 것입니다.

싱클톤으로 만들게 되면, 중복으로 레지스트리 생성을 호출하게 되어도 한번만 생성을 하게 됩니다. 이는 인스턴스 관리를 안전하게 가능합니다.

레지스트리 초기값


프레임웍에서 필요한 필수적인 클래스들이 있을 것입니다. 이 클래스는 프로그램의 시작과 끝까지 필수적으로 필요한 경우일 것입니다.

레지스트리는 클래스의 인스턴스를 동적으로 생성하고 삭제할 수 있습니다. 하지만 처음에 필요한 클래스들은 초기값을 통하여 프로그램 시작시 미리 시작이 가능하도록 합니다.

초기값은 배열로 , 클래스명 한쌍의 배열 형태의 값으로 작성을 합니다.

이렇게 작성된 초기값 배열은 레지스트리를 생성시 인자로 전달이 됩니다.

$this->Registry = Registry::init($init);
unset($init);

초기값 배열은 더이상 필요가 없기 때문에 메모리에서 삭제를 합니다.

setInstance


레지스트리의 setInstance메소드는 생성된 클래스의 인스턴스를 키값으로 pool에 저장을 할 수 있는 기능입니다.

레지스트리에 Application 클래스도 접근할 수 있도록 자기 자신을 등록해 줍니다.

$this->Registry->setInstance("App", $this);

그리고 미리 생성하여 사용하던 페키지도 등록을 해주도록 합니다.

$this->Registry->setInstance("Packages", $this->Packages);

pool


레지스트리는 인스턴스를 담고 있는 배열을 가지고 있습니다.

레지스트리 등록


레이지스트리에 클래스 인스턴스를 생성하여 등록을 처리할 수 있습니다. 레지스트리에 등록된 클래스는 싱글턴과 같은 효과를 보실 수 있습니다.

레지스트리


Application은 레지스트리 클래스를 초기화 하고 관련 몇가지 클래스의 인스턴스를 생성하여 등록하게 됩니다.

레지스트리 클래스


레지스트리 클래스는 싱글턴 패턴 방식으로 제작이 되어 있습니다. 싱글톤 패턴은 시스템에서 인스턴스를 한번만 생성이 가능하도록 제한하는 패턴입니다.

만일 시스템에서 레지스트리 인스턴스를 여러개를 만들어 사용을 한다고 하면 많은 혼돈이 발생될 것입니다.

싱클톤으로 만들게 되면, 중복으로 레지스트리 생성을 호출하게 되어도 한번만 생성을 하게 됩니다. 이는 인스턴스 관리를 안전하게 가능합니다.

레지스트리 초기값


프레임웍에서 필요한 필수적인 클래스들이 있을 것입니다. 이 클래스는 프로그램의 시작과 끝까지 필수적으로 필요한 경우일 것입니다.

레지스트리는 클래스의 인스턴스를 동적으로 생성하고 삭제할 수 있습니다. 하지만 처음에 필요한 클래스들은 초기값을 통하여 프로그램 시작시 미리 시작이 가능하도록 합니다.

초기값은 배열로 , 클래스명 한쌍의 배열형태의 값으로 작성을 합니다.

이렇게 작성된 초기값 배열은 레지스트리를 생성시 인자로 전달이 됩니다.

$this->Registry = Registry::init($init);
unset($init);

초기값 배열은 더이상 필요가 없기 때문에 메모리에서 삭제를 합니다.

setInstance


레지스트리의 setInstance메소드는 생성된 클래스의 인스턴스를 키값으로 pool에 저장을 할 수 있는 기능입니다.

레지스트리에 Application 클래스도 접근할 수 있도록 자기 자신을 등록해 줍니다.

$this->Registry->setInstance("App", $this);

그리고 미리 생성하여 사용하던 페키지도 등록을 해주도록 합니다.

$this->Registry->setInstance("Packages", $this->Packages);

pool


레지스트리는 인스턴스를 담고 있는 배열을 가지고 있습니다.

레지스트리 등록


레이지스트리에 클래스 인스턴스를 생성하여 등록을 처리할 수 있습니다. 레지스트리에 등록된 클래스는 싱글턴과 같은 효과를 보실 수 있습니다.