'분류 전체보기'에 해당되는 글 75건

  1. 2010.01.02 viewThisObjectVars
  2. 2010.01.02 viewGlobalVars
  3. 2010.01.02 getUserControllerInstance
  4. 2010.01.02 getModelInstance
  5. 2010.01.02 getControllerInstance
  6. 2010.01.01 setUserIniConfig
  7. 2010.01.01 setLayout
  8. 2010.01.01 dispatcher
  9. 2010.01.01 redirect
  10. 2010.01.01 initController

현재 사용중인 클래스의 모든 Object 들을 출력해줍니다.
모델클래스 또는 뷰에서 디버깅시 유용하게 사용할 수 있습니다.

뷰의 일부
<html><head><title></title></head>
<body>
.
.
.

<?=$this->viewThisObjectVars();?>
</body>
</html>

Posted by webdata
현재 파일에서 사용할 수 있는 모든 변수들을 출력해줍니다.
모델클래스 또는 뷰에서 디버깅시 유용하게 사용할 수 있습니다.

뷰의 일부
<html><head><title></title></head>
<body>
.
.
.

<?=$this->viewGlobalVars();?>
</body>
</html>

Posted by webdata
getUserControllerInstance 는 앞의 getControllerInstance 와 기본적으로 동일한 메소드입니다만, 클래스명 규칙에 맞지 않는 외부 클래스를 가져올 경우에 사용합니다.

규칙에 맞지 않는 만큼 직접 해당 클래스 경로 및 클래스오브젝트변수를 지정해 주어야 합니다.
class BBS extends Controller {
   
    function BBS() {
        $this->initController();        //생성자에서 getUserControllerInstance 를 사용할 경우 초기화 필수
        $this->getUserControllerInstance("Spac/controller","Mail.Class.php");
      $this->Mail = new Mail;

    }

    function sendMail() {
        $this->Mail->Send();
    }

}


직접 클래스파일을 삽입하는경우에는 위 메소드를 사용하지 않을 수 있습니다.
require_once("Spac/controller/Mail.Class.php");
class BBS extends Controller {
   
    function BBS() {
      $this->Mail = new Mail;
    }

    function sendMail() {
        $this->Mail->Send();
    }

}

Posted by webdata
"getModelInstance" 는 getControllerInstance 와 비슷한 기능을 하는 메소드이지만 차이점은 모델디렉토리의 클래스를 가져온다는 것입니다.

사용법은 "getControllerInstance" 와 동일합니다.
class BBS extends Controller {
   
    function BBS() {
        $this->initController();
        $this->getModelInstance("Auth");
    }

    function login() {
        $this->Auth->Login();
    }

}

getModelInstance("클래스명") 의 방식으로 클래스 Object를 가져오면 클래스명과 같은 이름으로 클래스 Object 변수가 자동으로 생성되어 위 예제처럼  "$this->Auth->Login();" 와 같이 사용할 수 있습니다.

또는 아래와 같이 메소드를 사용하지 않고 직접 불러사용할 수도 있습니다.

require_once("Spac/model/Auth.Class.php");
class BBS extends Controller {
   
    function BBS() {
        $this->Auth =  new Auth;
    }

    function login() {
        $this->Auth->Login();
    }

}




비슷한 메소드 참조
getControllerInstance
Posted by webdata
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
setUserIniConfig 메소드는 사용자가 모델클래스 작성시 별도의 환경설정파일을 만들어 이 파일내의 값들을 모델클래스내에 변수로 가져와 사용하고자 하는경우 유용하게 사용할 수 있습니다.

setUserIniConfig(사용자설정파일.ini 절대경로) 의 유형으로 사용할 수 있으며, 이 메소드를 호출하면 사용자 모델클래스내에
멤버변수 "userConfig" 내에 Object 형식으로 저장되어 집니다.

따라서 setUserIniConfig 호출 후에 해당 파일의 값을 가져오고 싶을때는 "$this->userConfig->변수명" 으로 가져와서 사용할 수 있습니다.

가져오는 설정파일의 형식은 "ini" 파일의 형식을 따라야 합니다.

class MyClass extends Controller {
   .
   .
   .
   function initMyClass() {
       $this->setUserIniConfig("/home/mysite/Spac/Model/MyApp/MyApp.ini");
   }

   function execute() {
   
      $this->result_uri = $this->userConfig->my_uri;
      $this->dispatcher();

   }



}


"/home/mysite/Spac/Model/MyApp/MyApp.ini" 파일의 내용 예
; my app  ini setting

my_uri = "mypage.html"




Posted by webdata
setLayout 메소드는 레이아웃 구성에 사용되는 메소드입니다.

출력하려는 뷰 페이지가 한개의 파일로 구성되지 않고, 여러개의 조각조각 나뉘어진 파일들이 모여 하나의 페이지를 구성하는 경우 Spac 레이아웃도구를 이용하여 해당 페이지를 출력 할 수 있는데 이때 조각파일들을 하나의 레이아웃페이지로 모아주는 역할을 합니다.

이 메소드는 "/Spac/controller/Layout.ini" 파일을 읽어 레이아웃을 구성하는 파일들을 Controller 내부 변수로 세팅하는 역할을 하므로 먼저 "/Spac/controller/Layout.ini" 파일을 구성해야 합니다.

레이아웃사용법 및 환경설정파일 작성법은 "Spac 레이아웃" 매뉴얼에서 자세히 다루기로 하고 여기서는 환경설정파일인 "/Spac/controller/Layout.ini"파일의 설정이 되어 있다는 가정하에 사용법을 설명드립니다.

아래는 Layout.ini 파일의 설정된 "main" 의 레이아웃 구성을 사용하는 예제입니다.
class BBS extends Controller {

    function BBS() {}

    .
    .
    .

    function goMainPage() {
 
       $this->setLayout("main");
       $this->targetLayoutName = "body";           //값이 "body" 인경우에는 생략이 가능합니다.
       $this->dispatcher();

    }

}


페이지 출력시엔 기본 view 페이지 출력과 같은 dispatcher 메소드를 호출합니다.



Posted by webdata
dispatcher 메소드는 사용자의 모델클래스 내에서 호출하며, 호출 즉시 모델클래스내에서 지정된 뷰 파일을 출력하는 역할을 합니다.

dispather 에 의해 페이지가 출력될경우 브라우저의 주소가 변경되지 않고 원하는 뷰의 내용을 출력할 수 있습니다.

사용법은 아래와 같이 뷰파일을 지정한 후 dispather 를 호출합니다.

dispacher 의 예제
class BBS extends Controller() {

    function BBS() {   }

    function goWriteForm() {
         $this->result_uri = 'write.html';
         $this->dispatcher();
    }

    function execute() {
        $this->goWriteForm();
    }

}


위의 내용 중 뷰를 지정하는 result_uri 값은 Spac 의 뷰 디렉토리를 기준으로 경로를 입력합니다.
$this->result_uri = 'write.html';            <== 이경우 "Spac/view/write.html" 의 경로에 파일이 있는경우


Posted by webdata
redirect 메소드는 현재 페이지에서 특정페이지로 바로 이동시키는 역할을 합니다.
redirect 메소드를 호출하기전에 Controller 의 멤벼변수인 result_uri 에 이동시킬 주소를 지정합니다.

아래는 모델클래스가 호출되면 즉시 다른 페이지로 이동되로록 하는 예제입니다.
class writeBBS extends Controller {

    function writeBBS() {}

    function execute() {

       $this->result_uri = "http://www.daum.net";
       $this->redirect();

    }

}


위 메소드가 호출되면 브라우저의 주소 자체가 변경되어 이동하게됩니다.
Posted by webdata
initController 메소드는 Spac Controller 의 환경을 초기화하는 역할을 합니다.
Spac Controller의 메소드를 상속받아 사용하기 위해선 이 초기화 메소드를 반드시 호출해야 합니다.

Spac 에서는 사용자가 작성한 모델클래스에서 Controller 를 확장하여 사용하는 경우에 이 초기화 메소드를 자동으로 호출하도록 구성되어 있으므로 사용자가 별도로 이 초기화 메소드를 호출할 필요는 없습니다.

다만, Spac 에서 initController 를 자동으로 호출하는 시점은 사용자 모델클래스의 생성자가 호출 된 이후의 시점이므로 모델클래스의 생성자 안에서 Spac Controller의 내부 매소드를 상속받아 사용하고자 하는경우에는 직접 initController 를 호출해야 합니다.

1. Spac 이 자동으로 initController 를 호출한 후에 사용하는 예제
class MyClass extends Controller {

    function MyClass () {}

    function initMyClass() {
       $this->getControllerInstance("MyExtClass");
    }

    function execute() {
       $this->initMyClass();

       //이하 사용자 프로그램 구성

    }

}


위 예제에서는 "getControllerInstance" 를 사용하였습니다.
이 메소드는 Spac Controller의 에서 상속받은 메소드입니다.
위 처럼 MyClass 생성자에서 사용하지 않는 경우에는 Controller 의 초기화 메소드인 initController 를 호출하지 않아도 Spac Controller 에서 자동으로 초기화를 수행해 줍니다.


2. 사용자의 모델클래스 생성자안에서 Spac Controller 의 메소드를 사용할 경우
class MyClass extends Controller {

    function MyClass () {
       $this->initController();
       $this->getControllerInstance("MyExtClass");
    }

    function execute() {

       //이하 사용자 프로그램 구성

    }

}

위처럼 사용자 모델클래스인 MyClass 의 생성자인 "MyClass" 내부에서 getControllerInstance 를 사용하고 자 할 경우에는 먼저 initController를 호출해야 합니다.

Posted by webdata