Spac Download2012. 2. 28. 11:05



box.gifSpac 12.2.1


Spac 은 Simple Php Action Class 의 약자로서 PHP웹프로그램 개발시 사용하는 클래스기반의 PHP프레임워크입니다.

설치 및 환경설정은 http://www.phpwork.kr/Manual/viewContents/2 를 참고하시면 됩니다.

케릭터셋은 UTF-8 입니다.






Spac 매뉴얼 보러가기 : http://www.phpwork.kr/Manual
다운로드 받으러 가기 : http://www.phpwork.kr/Downloads/viewDownloadsList/Spac 


이전버전 사용자는 아래의 내용을 참조하여 업데이트 해주시기 바랍니다.
  1. Spac/viewTemplate 디렉토리내의 ViewTemplate.Class.php 파일 덮어쓰기
  2. Spac/Dao 디렉토리내의 Dao.Class.php 파일 덮어쓰기
  3. Spac /controller/SpacSession 디렉토리와 내부 파일 모두 복사
  4. Spac /ActionClass.Class.php 파일 덮어쓰기
  5. Spac /Controller.Class.php 파일 덮어쓰기


업데이트 내역은 다음과 같습니다.

  1. 템플릿태그 사용시 {= } 내부에서도 {} 를 중복 사용 가능 처리
  2. MySQL Dao 사용시 프로시저호출 에러 수정
  3. MySQL Dao 디버깅 기능 추가 (Dao.Class.php 30 라인 설정변경)   ☞ (매뉴얼참조)
  4. MySQL Dao 바인딩 방식 추가(바인딩 쿼리에 "?" 와 ":VAR" 방식 모두 사용 가능하도록 처리) ☞ (매뉴얼참조)
  5. 리터럴, 바인딩 관계없이 "execute" 메서드로 쿼리 실행 가능하도록 처리 ☞ (매뉴얼참조)
  6. Spac 자체 세션컨트롤 추가(DB 세션을 사용하며, 내장 MySQL Dao 를 사용)   ☞ (매뉴얼참조)
  7. 기타 몇가지 코드개선
License[Spac V.12.2.1]
1. 개인/기업/영리/비영리 관계없이 웹개발에 무료로 사용할 수 있습니다.
2. 프레임워크 내의 소스를 사용자 환경에 맞게 수정해 사용할 수는 있으나, 이렇게 수정된 Spac 소스나, 수정된 Spac 소스가 포함된 프로그램, 또는 Spac 소스중의 일부분을 타인에게 배포하거나 판매할 수 없습니다.
3. 소스내의 주석문은 어떠한 경우라도 수정/삭제할 수 없습니다. (Spac에 의해 자동생성된 파일내의 내용 포함)
4. 원작자가 배포한 상태 그대로(수정되지 않은)인 경우에 한해 자유롭게 재배포할 수 있습니다.
5. 이 프로그램의 사용으로 인해 발생하는 어떠한 문제도 제작자는 책임지지 않습니다.
Posted by webdata
Spac Download2011. 12. 1. 13:50

box.gif

Spac 11.12.1


Spac 은 Simple Php Action Class 의 약자로서 PHP웹프로그램 개발시 사용하는 클래스기반의 PHP프레임워크입니다.

설치 및 환경설정은 http://www.phpwork.kr/Manual/viewContents/2 를 참고하시면 됩니다.

케릭터셋은 UTF-8 입니다.



Spac 매뉴얼 보러가기 : http://www.phpwork.kr/Manual
다운로드 받으러 가기 : http://www.phpwork.kr/Downloads/viewDownloadsList/Spac

이번 버전은 템플릿 태그관련 코드만 수정되었습니다.

따라서 이전버전 사용자는 Spac/viewTemplate 디렉토리내의 ViewTemplate.Class.php 파일만 기존 파일에 덮어쓰시면 됩니다.


업데이트 내역은 다음과 같습니다.

  1. 뷰에 한글변수 사용할 수 있도록 수정
License1. 개인/기업/영리/비영리 관계없이 웹개발에 무료로 사용할 수 있습니다.
2. 프레임워크 내의 소스를 사용자 환경에 맞게 수정해 사용할 수는 있으나, 이렇게 수정된 Spac 소스나, 수정된 Spac 소스가 포함된 프로그램, 또는 Spac 소스중의 일부분을 타인에게 배포하거나 판매할 수 없습니다.
3. 소스내의 주석문은 어떠한 경우라도 수정/삭제할 수 없습니다. (Spac에 의해 자동생성된 파일내의 내용 포함)
4. 원작자가 배포한 상태 그대로(수정되지 않은)인 경우에 한해 자유롭게 재배포할 수 있습니다.
5. 이 프로그램의 사용으로 인해 발생하는 어떠한 문제도 제작자는 책임지지 않습니다.
Posted by webdata
Spac Download2011. 9. 21. 11:48

box.gif

Spac 11.9.1


Spac 은 Simple Php Action Class 의 약자로서 PHP웹프로그램 개발시 사용하는 클래스기반의 PHP프레임워크입니다.

설치 및 환경설정은 http://www.phpwork.kr/Manual/viewContents/2 를 참고하시면 됩니다.

케릭터셋은 UTF-8 입니다.



Spac 매뉴얼 보러가기http://www.phpwork.kr/Manual
다운로드 받으러 가기 : http://www.phpwork.kr/Downloads/viewDownloadDetail/0/1/67


이전버전 사용자는 controller 디렉토리내의 'ActionClass.Class.php' 파일과 'Controller.Class.php' 파일을 기존 파일이 덮어 써 주시고"Controller.ini" 파일의 55~57 라인의 내용을 기존 파일에 추가합니다.


업데이트 내역은 다음과 같습니다.

  1. 디폴트 액션 클래스 지정기능 추가 (http://www.phpwork.kr/Manual/viewContents/100 참조)
License1. 개인/기업/영리/비영리 관계없이 웹개발에 무료로 사용할 수 있습니다.
2. 프레임워크 내의 소스를 사용자 환경에 맞게 수정해 사용할 수는 있으나, 이렇게 수정된 Spac 소스나, 수정된 Spac 소스가 포함된 프로그램, 또는 Spac 소스중의 일부분을 타인에게 배포하거나 판매할 수 없습니다.
3. 소스내의 주석문은 어떠한 경우라도 수정/삭제할 수 없습니다. (Spac에 의해 자동생성된 파일내의 내용 포함)
4. 원작자가 배포한 상태 그대로(수정되지 않은)인 경우에 한해 자유롭게 재배포할 수 있습니다.
5. 이 프로그램의 사용으로 인해 발생하는 어떠한 문제도 제작자는 책임지지 않습니다.
Posted by webdata
Spac Download2011. 7. 6. 16:37

Spac 11.7.1


php 프레임워크 Spac  11.7.1을 공개합니다.

Spac 은 Simple Php Action Class 의 약자로서 PHP웹프로그램 개발시 사용하는 클래스기반의 PHP프레임워크입니다.

설치 및 환경설정은 http://www.phpwork.kr/Manual/viewContents/2 를 참고하시면 됩니다.

케릭터셋은 UTF-8 입니다.


이전버전 사용자는 controller 디렉토리내의 'ActionClass.Class.php' 파일과 'Controller.Class.php' 파일을 기존 파일이 덮어 쓰면 업데이트 됩니다.


업데이트 내역은 다음과 같습니다.

  1. INI 파일 완벽 분리 지원
  2. 뷰 캐시 자동업데이트 오류 수정 
License1. 개인/기업/영리/비영리 관계없이 웹개발에 무료로 사용할 수 있습니다.
2. 프레임워크 내의 소스를 사용자 환경에 맞게 수정해 사용할 수는 있으나, 이렇게 수정된 Spac 소스나, 수정된 Spac 소스가 포함된 프로그램, 또는 Spac 소스중의 일부분을 타인에게 배포하거나 판매할 수 없습니다.
3. 소스내의 주석문은 어떠한 경우라도 수정/삭제할 수 없습니다. (Spac에 의해 자동생성된 파일내의 내용 포함)
4. 원작자가 배포한 상태 그대로(수정되지 않은)인 경우에 한해 자유롭게 재배포할 수 있습니다.
5. 이 프로그램의 사용으로 인해 발생하는 어떠한 문제도 제작자는 책임지지 않습니다.
..


.

Posted by webdata
Spac Download2010. 12. 7. 21:45

새버전이 나왔습니다.
새버전 링크 : http://spac.tistory.com/144

-----------------------------------------

Spac v.10.12.1 버전을 공개합니다.
변경된 내용은 아래와 같으며, 문의사항은 이메일이나 www.phpwork.kr 에 해주시기 바랍니다.

  1. 기본내장템플릿 태그 기능 개선
  2. 사용자클래스 자동로딩 기능 추가
  3. 기타 소스파일 코드정리
  4. 이전 버전 사용자는Controller.Class.php, ActionClass.Class.php, ViewTemplate.Class.php 파일을 덮어 써 주시고 "Controller.ini" 파일내의 [load_user_class] 항목을 추가시켜줍니다.
    또한 Spac/controller 경로에 AutoLoadUserClass.ini 파일을 추가해줍니다.
  5. 이 버전은 이전버전에서 업데이트 해도 사용자의 프로그램에 영향을 주지 않습니다.
Posted by webdata
Spac Download2010. 9. 7. 10:16
Spac php framework v.10.9.1 이 공개되었습니다.
업데이트내용은 아래와 같습니다.

  1. 컨트롤러초기화가 중복으로 수행될수 있는 현상이 수정되었습니다.
  2. 컨트롤러 환경설정파일을 유동적으로 불러 사용할 수 있도록 개선되어 하나의 Spac 프레임워크 소스를 이용해 다수의 웹사이트를 개발하실 수 있고, 개발된 프로그램을 배포시 각종 설정파일을 포함하면 Spac 프레임워크를 포함하지 않고도 배포가 가능합니다.
  3. 각종 INI파일을 컨트롤러 환경설정파일에서 일괄 설정할 수 있도록 개선되었습니다.
  4. 브라우저에의해 호출되는 액션클래스 및 액션 메소드 접근제어 처리기능이 추가되었습니다. (http://www.phpwork.kr/Blog/viewContents/82 참조)
  5. 이전버전 사용자는 "ActionClass.Class.php", "Controller.Class.php", "Controller.ini" 파일을 덮어써주시고 "Controller.ini" 의 설정값을 서버환경에 맞게 수정하고 사용합니다.
    (사용자 프로그램에는 영향을 주지 않습니다.)



Spac php framework v.10.9.1 다운로드

Posted by webdata
웹 페이지를 만들 때는 보통 하나의 파일로 하나의 페이지를 구성하기보다는, 페이지의 각 부분 ( 메인메뉴,서브메뉴,바디,하단카피라이트 등)을 각각 파일로 만들어 하나의 파일에 삽입하여 구성하는 방법을 많이 사용합니다.

예를 들면 아래와 같습니다.



위의 그림에서는 각 부분의 html 파일들이 모여 "layout.html" 파일을 이루고 있습니다.

layout.html 파일에 각 html 파일들을 직접 삽입하여 페이지를 구성할 수도 있으나, Spac 프레임웍은 위와 같은 레이아웃 구성을 쉽게 할 수 있도록 레이아웃 도구를 제공합니다.

이제 Spac 의 레이아웃 도구를 이용하여 위와 같은 레이아웃을 구성해 보도록 하겠습니다.


먼저 레이아웃을 구성할 설정파일을 열어 아래와 같이 입력합니다. (만약 설정파일이 존재하지 않는다면 만들어줍니다)
레이아웃 설정파일은 "Spac/controller/Layout.ini" 파일입니다.


* Spac/controller/Layout.ini
;layout files config
[main]
layout   = "/layout.html"
menu   = "/menu.html"
left  = "/left.html"
body  = "/body.html"
foot  = "/foot.html"

- 첫번째줄(녹색글씨) 는 주석문이므로 무시됩니다.

- 두번째줄은 레이아웃의 대표 이름입니다.
  이 설정파일에는 여러개의 레이아웃을 구성할 수 있으므로 각 레이아웃마다 구별할 수 있는 이름을 지정해줍니다.
  이번 예제에서는 "main" 으로 하겠습니다.

- 세번째줄은 전체레이아웃의 부모가 되는 파일을 지정합니다.
  이 부모파일은 반드시 레이아웃파일 구성중 가장 먼저 와야 합니다.

- 네번째부터는 부모 레이아웃의 각 부분에 들어갈 조각파일들을 지정합니다.
  레이아웃파일의 지정은 이름 = "값" 의 형식을 가집니다.


레이아웃 설정이 끝나면 그 내용대로 각각의 파일들을 만들어줍니다.
설정파일의 순서대로 파일들을 만들어보겠습니다.

* Spac/view/layout.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Spac Layout Page...</title>
</head>
<body>

<table border="1">
    <tr>
        <td width="800" colspan="2" height="70">#menu#</td>
    </tr>
    <tr>
       <td width="150" height="500">#left#</td>
       <td width="650">#body#</td>
    </tr>
    <tr height="50">
        <td width="800" colspan="2">#foot#</td>
    </tr>
</table>

</body>
</html>

레이아웃에 들어가는 내용은 전체적인 레이아웃 배치와 각 부분에 들어갈 html 파일로 구성됩니다.
html 로 삽입해야 하는 부분에는 "Layout.ini" 에 지정한 html 파일의 이름을 지정해주고 앞뒤로 "#" 을 이용해 닫습니다.(파랑색 글씨)


이제 각 html 파일의 내용을 만들어 보겠습니다.

* Spac/view/menu.html
이곳은 메뉴 영역입니다.


* Spac/view/left.html
이곳은 왼쪽 서브 메뉴 영역입니다.


* Spac/view/body.html
이곳은 바디 부분입니다.
<br/>
<?=$this->msg?>
<br/>
이곳이 주요 내용을 출력할 부분입니다.


* Spac/view/foot.html
이곳은 하단 카피라이트 부분입니다.




레이아웃을 위한 설정과 파일을 모두 만들었습니다.
이제 모델클래스를 만들어 지금까지 만든 레이아웃페이지를 출력해보겠습니다.

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

    var $msg = '안녕하세요';

    function LayoutTest() {}

    function execute() {
        $this->setLayout("main");
        $this->result_uri = "body.html";
        $this->targetLayoutName  = "body";
        $this->dispatcher();
    }
}
?>

1. "setLayout" 메소드를 이용하여 "Layout.ini" 에 정의된 레이아웃 중 "main" 이라는 이름의 레이아웃을 적용합니다.
2. "result_uri" 에 주요한 출력파일을 설정합니다. (여기서는 body.html 가 주요한 내용이 있는 파일입니다.)
3. "targetLayoutName" 에는 위 2번 항목이 위치할 레이아웃내의 이름영역을 지정해줍니다. (기본값 "body")
4. "dispatcher" 메소드를 이용해 위 레이아웃을 화면에 배치/출력합니다.


브라우저에서 호출해봅니다.


실제 적용된 예제는 아래 링크에서 확인하실 수 있습니다.
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