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
기본예제/회원관리2009. 12. 4. 23:47
이제 리스트 화면에서 특정회원을 삭제해 보도록 하겠습니다.

특정 회원을 삭제하기 위해선 해당 회원의 키값을 전달해야 하는데 회원가입예제에서 POST 처리를 했으므로 이번에는 GET방식으로 회원 키값을 받아 처리하는 예제를 해보겠습니다.

먼저 list.html 에 각 회원목록에 버튼을 만들어 회원의 정보를 삭제할 수있도록 GET방식으로 삭제 메소드에 변수를 전달하는 코드를 만듭니다.

기존 list.html 을 아래의 내용으로 수정합니다.

* Spac/view/list.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>회원리스트</title>

<script>
function deleteUser(user_id) {
    document.location.href="/User/deleteUser/"+user_id;
}
</script>

</head>
<body>

회원수는 <?=count($this->data_list)?> 명 입니다.
<br/><br/>

<table border="1">

    <tr bgcolor="#f2f2f2">
        <td width="100">아이디</td>
        <td width="120">이름</td>
        <td width="150">등록일</td>
        <td width="60">처리</td>       
    </tr>
 
<?php
foreach($this->data_list as $Rows) {
?>

    <tr>
        <td width="100"><?=$Rows['user_id']?></td>
        <td width="120"><?=$Rows['user_name']?></td>
        <td width="150"><?=$Rows['reg_date']?></td>
        <td width="60"><a href="#" onClick="deleteUser('<?=$Rows['user_id']?>')">삭제</a></td>              
    </tr>

<?php
}
?>

</table>

<!-- 회원가입버튼을 만들어주고 클릭하면 이전에 만든 가입폼으로 이동시킵니다. -->
<input type="button" value="회원가입" onClick="document.location.href='/User/viewUserRegForm'"></input>

</body>
</html>

회원 삭제처리 메소드는 User 클래스내에 "deleteUser" 로 하겠습니다.
따라서 위의 예제에서는 각 회원리스트중 "삭제" 버튼을 클릭하면 "/User/deleteUser/아이디" 를 브라우저로 호출하도록 했습니다.
URL에서 슬래시를 기준으로 첫번째는 클래스명, 두번째는 메소드명, 세번째이상은 전달 GET 변수입니다.
따라서 위 주소의 뜻은 User 클래스의 deleteUser 메소드를 "아이디"를 인자로 호출한다는의미입니다.

이제 실행할 실제 deleteUser 메소드를 작성합니다.
 
* Spac/model/User.Class.php
<?php
require_once("../Spac/controller/Dao/Dao.Class.php"); // getControllerInstance("Dao") 사용할경우 생략가능
class User extends Controller {

    var $user_id;
    var $user_pw;
    var $user_name;
   
    var $data_list = array();   

    function User () {
        $this->Dao = new Dao;             //$this->getControllerInstance("Dao"); 로 대체 가능.
        $this->Dao->transaction = true;
        $this->Dao->connect();
    }

    function viewUserRegForm() {
        $this->result_uri    = "user_reg.html";
        $this->dispatcher();
    }

    // POST 로 전송된 값을 맴버변수로 세팅합니다.
    function setPostVars() {
        $this->user_id       = $_POST['user_id'];
        $this->user_pw      = $_POST['user_pw'];
        $this->user_name  = $_POST['user_name'];
    }

    //위에서 저장된 맴버변수 값을 DB에 Insert 합니다.
    function regUser() {

        $this->setPostVars();

        //print_r($param);
        //exit;
       
        $query = " Insert Into user_info(user_id,user_pw,user_name,reg_date) values(?,password(?),?,NOW()) ";
        $this->Dao->prepareStatement($query);
      
        $param = array($this->user_id,$this->user_pw,$this->user_name);
       
        $this->Dao->setParam($param);
      
        $this->Dao->executeStatement();
      
        //echo "회원가입에 성공했습니다.";
        $this->result_uri    = "/User/getUserList";
        $this->redirect();

    }
   
    function getUserList() {
     
        $this->data_list = array();

        $query = " Select * From user_info ";
        $this->Dao->executeQuery($query);

        while($rows = $this->Dao->getFetchArray()) {
            $this->data_list[] = $rows;
        }

        $this->result_uri    = "list.html";
        $this->dispatcher();      

    }

    function getDeleteGetVars() {
        $this->user_id = $this->args[0];
    }
   
    function deleteUser() {
       
        $this->getDeleteGetVars();
       
        $query = " Delete From user_info Where user_id = ?";
        $this->Dao->prepareStatement($query);       
        $param = array($this->user_id);       
       
        $this->Dao->setParam($param);
      
        $this->Dao->executeStatement();
        $this->Dao->closeStatement();

        $this->result_uri    = "/User/getUserList";
        $this->redirect();
       
    }
   
   
   
   
   
   

}
?>


:::[getDeleteGetVars] 설명:::
위 내용중 파란색 글자 부분이 기존 User 클래스에서 추가된 내용입니다.
"getDeleteGetVars" 메소드를 보면 GET변수를 받는 방법을 알 수 있습니다.

 도메인/클래스명/메소드명/parameter1/parameter2.....

위의 형식 중 parameter를 받는 방법은
$param1 = $this->args[0];
$param2 = $this->args[1];


위의 getDeleteGetVars 예제에선 전달 변수가 1개이므로
    function getDeleteGetVars() {
        $this->user_id = $this->args[0];
    }

이처럼 변수를 받아 맴버변수로 저장했습니다.


[deleteUser] 설명

먼저 위의 getDeleteGetVars 메소드를 호출하여 전달된 변수를 맴버변수로 받습니다.
해당 변수를 user_id  조건으로 삭제 SQL 문을 처리합니다.

처리 후엔
        $this->result_uri    = "/User/getUserList";
        $this->redirect();

이처럼 회원 리스트 화면으로 이동시킵니다.


이제 브라우저에서 삭제처리를 실행하여 제대로 삭제가 이루어 지는지 테스트합니다.


'기본예제 > 회원관리' 카테고리의 다른 글

2. 회원리스트 조회  (0) 2009.12.01
1. 회원가입 예제  (0) 2009.12.01
Posted by webdata

윈도우에 Spac 개발환경을 구성하는 예제를 설명합니다.


1. 윈도우용 Apache + Php + Mysql 을 설치합니다.


윈도우용 APM 은 다양한 무료버전이 있습니다만, 여기서는 쉽고 간단한 Autoset 6 을 이용해 설치하는 과정을 설명드리겠습니다.
Autoset6 은 http://www.autoset.net/sites/front/pages.php/download/autoset_6_0_0 에서 "오토셋 6 Full Package" 를 다운로드 받아 설치합니다.

설치경로는 "C:\AutoSet6" 으로 하겠습니다.

설치가 완료되면 홈 디렉토리를 설정합니다.
홈디렉토리는 Autoset 의 기본 홈디렉토리를 그대로 쓰지 않고 "C:\AutoSet6" 에 "www" 폴더를 생성합니다.

그 후 "www" 안에 다시 "public_html" 폴더를 생성합니다.

이제 생성한 "C:\AutoSet6\www\public_html" 을 웹디렉토리로 설정합니다.
Autoset6 매니저를 실행한 후 아래와 같이 설정합니다.

   =>  



이제 Spac 패키지를 "C:\AutoSet6\www" 안에 복사하여 아래와 같이 구성합니다.






2. 이클립스 를 설치합니다.


이클립스설치 이전에 이클립스는 자바 환경에서 구동되므로 JRE 를 설치해야 합니다.
JRE는 이곳 에서 다운로드 받습니다.

위의 사이트에 방문하셔서 "Java SE Development Kit (JDK)" 혹은 "Java SE Runtime Environment (JRE)" 를 다운로드 받습니다. (윈도우7 64비트 인경우에 32비트버전을 설치해야 문제 없이 구동됨 - 현재 64비트는 오류가 생김)

다음으로 이곳 에 방문하셔서 이클립스 PHP 버전을 다운로드 받습니다.
이클립스 시작에 문제가 생기는 경우 이클립스 설치경로에 가셔서 "eclipse.ini" 파일을 열어 JRE 경로를 추가해줍니다.
아래 내용 중 파란색 부문이 추가해 준 부분입니다. 자신의 JRE 경로를 넣어주시기 바랍니다.
아래내용은 윈도우7 인경우 입니다.
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.php.product
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx256m
-vm
C:\Program Files (x86)\Java\jre6\bin



그리고 윈도우 환경설정 Path에도 JRE 경로를 설정해 줍니다.




이제 이클립스를 실행한 후 새 PHP 프로젝트를 생성합니다.



프로젝트 이름은 "MyProject" 로 하겠습니다.
아래 "Contents" 영역은 "Create project from existing source" 를 선택한 후 이전에 생성한 디렉토리인 "C:\AutoSet6\www" 를 지정해 줍니다.



자 이제 Spac 개발환경이 만들어졌습니다.


Posted by webdata
이 예제는 우분투리눅스 9.10 에서 작성되었으며, 윈도우에서는 구성이 다를 수 있습니다.

[준비]
1. 로컬영역에 Apache + Php + Mysql 개발 환경을 구축해 놓습니다.
   우분투리눅스에 APM을 구성하는 예제는 http://spac.tistory.com/28 을 참조하시기 바랍니다.
   예제에서 기본 아파치 웹서비스 디렉토리는 "/home/계정/www/public_html" 로 설정합니다.
 
2. 웹서비스 디렉토리는 아래와 같이 구성합니다.
    - 예제에서의 계정은 "sue" 이며, 계정안에 "www" 디렉토리를 만들고 그 안에 프로그램을 위치했습니다.
    - "Spac"  디렉토리는 Spac 프레임웍 영역이며, "public_html" 디렉토리는 웹에서 접근가능한 디렉토리입니다.






이클립스 최신 PHP 버전을 다운로드 받습니다.
이클립스 다운로드 받기 ☞ http://www.eclipse.org/downloads/

PHP이클립스를 실행시키면 아래와 같이 PHP 개발환경이 열립니다.


새 PHP 프로젝트를 생성합니다. 프로젝트 이름은 MyProject 로 하겠습니다.




Contents 항목은 이미 구성하신 로컬 계정 영역으로 합니다. (/home/sue/www)



프로젝트 구성을 마치면 아래와 같은 프로젝트 트리가 나타납니다.



코드자동완성 설정을 합니다. (Window - Preferences)




개발환경 구성이 완료되었습니다.
이제 클래스 작성시 코드 자동완성기능을 활용하실 수 있습니다.





이클립스 내에 PHP서버를 등록 해 놓으면 "Run As" 메뉴를 이용하여 쉽게 이클립스 내 브라우저로 결과를 확인할 수 있습니다.








Posted by webdata