Spac 매뉴얼/MySQL Dao2009. 11. 16. 23:38

이제 Dao 를 Spac 프레임웍 내부로 불러와 데이터베이스에 연결하는 예제를 작성해보겠습니다.

회원 테이블을 관리하는 모델클래스를 만듭니다.

회원관리 클래스는 "Member"라는 이름으로 만듭니다.

이번 예제부터는 Spac 컨트롤러의 외부클래스 로드기능을 사용해야 하므로 "Controller" 를 상속받아 작성합니다.

* Spac/model/Member.Class.php
<?php
class Member extends Controller {

    var $Dao;
   
    function Member() {}                

    function initMember() {                            //맴버클래스 초기화메소드를 만들고 여기서 DB 연결을 합니다.
        $this->getControllerInstance("Dao");      // Dao 클래스를 로드합니다.
        $this->Dao->transaction = true;              // 트랜젝션을 Start 합니다.
        $this->Dao->Connect();                        // DB를 연결합니다.
    }

    function execute() {                                 //Spac의 기본 액션메소드를 정의합니다.
        $this->initMember();                           //기본메소드가 호출되면 DB연결을 수행합니다.
        echo "<p>데이터베이스 연결에 성공했습니다.</p>"; 
    }

}
?>

위의 예제는 Spac 컨틀로러의 메소드인 getControllerInstance 를 사용해서 Dao 클래스를 가져왔습니다.
일반적으로 위처럼 사용하면 되지만, 이클립스를 사용하는 경우 코드 자동완성기능을 사용하시려면 직접 Dao 클래스 파일을 삽입하여 사용해야 합니다.


즉, 아래와 같이 사용합니다.
  ==> getControllerInstance 를 사용하지 않는 예제
* Spac/model/Member.Class.php
<?php
require_once("C:\AutoSet6\www\Spac\controller\Dao\Dao.Class.php");
class Member extends Controller {
   
    var $Dao;

    function Member() {}                  //이번예제는 생성자에서 별도 할일이 없으므로 정의만 해 놓습니다.

    function initMember() {               //맴버클래스 초기화메소드를 만들고 여기서 DB 연결을 합니다.

       $this->Dao = new Dao;

        $this->Dao->transaction = true;                    // 트랜젝션을 Start 합니다.
        $this->Dao->Connect();                            // DB를 연결합니다.
    }

    function execute() {                                     //Spac의 기본 액션메소드를 정의합니다.
        $this->initMember();                               //기본메소드가 호출되면 DB연결을 수행합니다.
        echo "<p>데이터베이스 연결에 성공했습니다.</p>"; 
    }

}
?>




위의  두가지 예제의 결과는 모두 같습니다만, 이클립스를 사용하여 개발할 경우 두번째 방법을 사용하면 자동완성기능이 활성화되어 더욱 편하게 개발하실 수 있습니다.





이로서 Database 연결을 구현하였습니다.

브라우저에 아래의 주소를 입력한 후 성공메세지가 출력되는지 확인합니다.


오류가 없었다면 "데이터베이스 연결에 성공했습니다." 라는 메세지가 화면에 출력될 것입니다.





Posted by webdata