'spac method'에 해당되는 글 1건

  1. 2010.01.02 getControllerInstance
PHP개발시에 특정한 사이트가 아닌 범용적으로 유용하게 쓰이는 클래스들이 있습니다.

예를 들어 파일업로드 클래스나, 이메일발송 클래스, 데이터베이스 엑세스 클래스, 페이징 클래스등은 어느사이트를 개발하든 항상 유용하게 사용할 수 있는 클래스들입니다.

Spac에선 이러한 클래스를 외부컨트롤러라 명명하고 Spac 내부로 불러들여 사용할 수 있는 방법을 제공하는데
이때 사용하는것이 getControllerInstance 메소드입니다.

getControllerInstance 메소드를 사용하려면 Spac의 구조에 맞게 위치시켜야 하는데 그 규칙은 아래와 같습니다.


1. 외부컨트롤러 클래스의 파일명은 Spac 기본 클래스명명규칙을 따릅니다. (http://spac.tistory.com/6 참조)
2. 외부컨트롤러 클래스 파일은 "Spac/controller" 이하에 클래스명과 동일한(대소문자도 동일하게, 확장자는 제외) 디렉토리를 만들고 그 아래에 위치시켜야 합니다.


내가 만든 "sesstion_control.php" 파일을 Spac 내부로 불러들여 사용하고자 하는경우
1. 클래스명을 규칙에 맞게 수정합니다. => "SessionControl.Class.php"
    : 이때 클래스 파일 내부의 클래스 선언부 및 생성자 메소드명 또한 위의 "SessionControl"로 변경해야 합니다.
2. 클래스를 위치할 디렉토리를 생성합니다. => "Spac/controller/SessionControl"
3. 생성한 디렉토리에 위의 클래스파일을 위치시킵니다.


다음은 해당 클래스를 사용하는 예제 입니다.
class MyClass extends Controller {

    function MyClass () {}

    function myMethod() {
        $this->getControllerInstance("SessionControl");
    }

    function useMyController() {

        // getControllerInstance 로 가져오는경우 클래스명과 같은 이름으로 맴버변수가 자동으로 생성되므로 아래처럼
        // 사용할 수 있습니다.   
        $this->SessionControl->getSession();          //클래스에 getSession 메소드가 정의되어 있다고 가정합니다.
        .
        .
        .

    }

}



위의 예제는 "getControllerInstance" 메소드를 사용하였지만, 아래처럼 직접 클래스파일을 삽입한 후 직접 클래스 인스턴스를 생성하여 사용할 수도 있습니다. 이 경우에는 직접 Object 변수를 지정할 수 있으므로 클래스 명명규칙을 지키지 않아도 문제 없습니다.

* getControllerInstance 를 사용하지 않는 예제
require_once("Spac/controller/SessionControl.Class.php");
class MyClass extends Controller {

    var $SessionControl = null;

    function MyClass () {}

    function myMethod() {
        $this->SessionControl = new SessionControl;
    }

    function useMyController() {

        $this->SessionControl->getSession();
        .
        .
        .

    }

}



이클립스를 사용하여 개발을 할 경우 위의 두번째 예제방식으로 하면 클래스 및 메소드를 자동으로 안내해주는 코드자동완성기능을 활성화 시킬 수 있습니다.
Posted by webdata