'분류 전체보기'에 해당되는 글 75건
- 2010.01.02 viewThisObjectVars
- 2010.01.02 viewGlobalVars
- 2010.01.02 getUserControllerInstance
- 2010.01.02 getModelInstance
- 2010.01.02 getControllerInstance
- 2010.01.01 setUserIniConfig
- 2010.01.01 setLayout
- 2010.01.01 dispatcher
- 2010.01.01 redirect
- 2010.01.01 initController
Spac메소드 레퍼런스/viewThisObjectVars2010. 1. 2. 21:17
Spac메소드 레퍼런스/viewGlobalVars2010. 1. 2. 21:15
Spac메소드 레퍼런스/getUserControllerInstance2010. 1. 2. 21:10
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();
}
}
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();
}
}
class BBS extends Controller {
function BBS() {
$this->Mail = new Mail;
}
function sendMail() {
$this->Mail->Send();
}
}
Spac메소드 레퍼런스/getModelInstance2010. 1. 2. 20:21
"getModelInstance" 는 getControllerInstance 와 비슷한 기능을 하는 메소드이지만 차이점은 모델디렉토리의 클래스를 가져온다는 것입니다.
사용법은 "getControllerInstance" 와 동일합니다.
getModelInstance("클래스명") 의 방식으로 클래스 Object를 가져오면 클래스명과 같은 이름으로 클래스 Object 변수가 자동으로 생성되어 위 예제처럼 "$this->Auth->Login();" 와 같이 사용할 수 있습니다.
또는 아래와 같이 메소드를 사용하지 않고 직접 불러사용할 수도 있습니다.
비슷한 메소드 참조
getControllerInstance
사용법은 "getControllerInstance" 와 동일합니다.
class BBS extends Controller {
function BBS() {
$this->initController();
$this->getModelInstance("Auth");
}
function login() {
$this->Auth->Login();
}
}
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();
}
}
class BBS extends Controller {
function BBS() {
$this->Auth = new Auth;
}
function login() {
$this->Auth->Login();
}
}
비슷한 메소드 참조
getControllerInstance
Spac메소드 레퍼런스/getControllerInstance2010. 1. 2. 01:05
PHP개발시에 특정한 사이트가 아닌 범용적으로 유용하게 쓰이는 클래스들이 있습니다.
예를 들어 파일업로드 클래스나, 이메일발송 클래스, 데이터베이스 엑세스 클래스, 페이징 클래스등은 어느사이트를 개발하든 항상 유용하게 사용할 수 있는 클래스들입니다.
Spac에선 이러한 클래스를 외부컨트롤러라 명명하고 Spac 내부로 불러들여 사용할 수 있는 방법을 제공하는데
이때 사용하는것이 getControllerInstance 메소드입니다.
이 getControllerInstance 메소드를 사용하려면 Spac의 구조에 맞게 위치시켜야 하는데 그 규칙은 아래와 같습니다.
1. 외부컨트롤러 클래스의 파일명은 Spac 기본 클래스명명규칙을 따릅니다. (http://spac.tistory.com/6 참조)
2. 외부컨트롤러 클래스 파일은 "Spac/controller" 이하에 클래스명과 동일한(대소문자도 동일하게, 확장자는 제외) 디렉토리를 만들고 그 아래에 위치시켜야 합니다.
내가 만든 "sesstion_control.php" 파일을 Spac 내부로 불러들여 사용하고자 하는경우
다음은 해당 클래스를 사용하는 예제 입니다.
위의 예제는 "getControllerInstance" 메소드를 사용하였지만, 아래처럼 직접 클래스파일을 삽입한 후 직접 클래스 인스턴스를 생성하여 사용할 수도 있습니다. 이 경우에는 직접 Object 변수를 지정할 수 있으므로 클래스 명명규칙을 지키지 않아도 문제 없습니다.
* getControllerInstance 를 사용하지 않는 예제
이클립스를 사용하여 개발을 할 경우 위의 두번째 예제방식으로 하면 클래스 및 메소드를 자동으로 안내해주는 코드자동완성기능을 활성화 시킬 수 있습니다.
예를 들어 파일업로드 클래스나, 이메일발송 클래스, 데이터베이스 엑세스 클래스, 페이징 클래스등은 어느사이트를 개발하든 항상 유용하게 사용할 수 있는 클래스들입니다.
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. 생성한 디렉토리에 위의 클래스파일을 위치시킵니다.
: 이때 클래스 파일 내부의 클래스 선언부 및 생성자 메소드명 또한 위의 "SessionControl"로 변경해야 합니다.
2. 클래스를 위치할 디렉토리를 생성합니다. => "Spac/controller/SessionControl"
3. 생성한 디렉토리에 위의 클래스파일을 위치시킵니다.
다음은 해당 클래스를 사용하는 예제 입니다.
class MyClass extends Controller {
function MyClass () {}
function myMethod() {
$this->getControllerInstance("SessionControl");
}
function useMyController() {
// getControllerInstance 로 가져오는경우 클래스명과 같은 이름으로 맴버변수가 자동으로 생성되므로 아래처럼
// 사용할 수 있습니다.
$this->SessionControl->getSession(); //클래스에 getSession 메소드가 정의되어 있다고 가정합니다.
.
.
.
}
}
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();
.
.
.
}
}
class MyClass extends Controller {
var $SessionControl = null;
function MyClass () {}
function myMethod() {
$this->SessionControl = new SessionControl;
}
function useMyController() {
$this->SessionControl->getSession();
.
.
.
}
}
이클립스를 사용하여 개발을 할 경우 위의 두번째 예제방식으로 하면 클래스 및 메소드를 자동으로 안내해주는 코드자동완성기능을 활성화 시킬 수 있습니다.
Spac메소드 레퍼런스/setUserIniConfig2010. 1. 1. 21:32
setUserIniConfig 메소드는 사용자가 모델클래스 작성시 별도의 환경설정파일을 만들어 이 파일내의 값들을 모델클래스내에 변수로 가져와 사용하고자 하는경우 유용하게 사용할 수 있습니다.
setUserIniConfig(사용자설정파일.ini 절대경로) 의 유형으로 사용할 수 있으며, 이 메소드를 호출하면 사용자 모델클래스내에
멤버변수 "userConfig" 내에 Object 형식으로 저장되어 집니다.
따라서 setUserIniConfig 호출 후에 해당 파일의 값을 가져오고 싶을때는 "$this->userConfig->변수명" 으로 가져와서 사용할 수 있습니다.
가져오는 설정파일의 형식은 "ini" 파일의 형식을 따라야 합니다.
"/home/mysite/Spac/Model/MyApp/MyApp.ini" 파일의 내용 예
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();
}
}
.
.
.
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"
my_uri = "mypage.html"
Spac메소드 레퍼런스/setLayout2010. 1. 1. 21:21
setLayout 메소드는 레이아웃 구성에 사용되는 메소드입니다.
출력하려는 뷰 페이지가 한개의 파일로 구성되지 않고, 여러개의 조각조각 나뉘어진 파일들이 모여 하나의 페이지를 구성하는 경우 Spac 레이아웃도구를 이용하여 해당 페이지를 출력 할 수 있는데 이때 조각파일들을 하나의 레이아웃페이지로 모아주는 역할을 합니다.
이 메소드는 "/Spac/controller/Layout.ini" 파일을 읽어 레이아웃을 구성하는 파일들을 Controller 내부 변수로 세팅하는 역할을 하므로 먼저 "/Spac/controller/Layout.ini" 파일을 구성해야 합니다.
레이아웃사용법 및 환경설정파일 작성법은 "Spac 레이아웃" 매뉴얼에서 자세히 다루기로 하고 여기서는 환경설정파일인 "/Spac/controller/Layout.ini"파일의 설정이 되어 있다는 가정하에 사용법을 설명드립니다.
아래는 Layout.ini 파일의 설정된 "main" 의 레이아웃 구성을 사용하는 예제입니다.
페이지 출력시엔 기본 view 페이지 출력과 같은 dispatcher 메소드를 호출합니다.
출력하려는 뷰 페이지가 한개의 파일로 구성되지 않고, 여러개의 조각조각 나뉘어진 파일들이 모여 하나의 페이지를 구성하는 경우 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" 인경우에는 생략이 가능합니다.
function BBS() {}
.
.
.
function goMainPage() {
$this->setLayout("main");
$this->targetLayoutName = "body"; //값이 "body" 인경우에는 생략이 가능합니다.
$this->dispatcher();
}
}
}
}
페이지 출력시엔 기본 view 페이지 출력과 같은 dispatcher 메소드를 호출합니다.
Spac메소드 레퍼런스/dispatcher2010. 1. 1. 21:08
dispatcher 메소드는 사용자의 모델클래스 내에서 호출하며, 호출 즉시 모델클래스내에서 지정된 뷰 파일을 출력하는 역할을 합니다.
dispather 에 의해 페이지가 출력될경우 브라우저의 주소가 변경되지 않고 원하는 뷰의 내용을 출력할 수 있습니다.
사용법은 아래와 같이 뷰파일을 지정한 후 dispather 를 호출합니다.
dispacher 의 예제
위의 내용 중 뷰를 지정하는 result_uri 값은 Spac 의 뷰 디렉토리를 기준으로 경로를 입력합니다.
dispather 에 의해 페이지가 출력될경우 브라우저의 주소가 변경되지 않고 원하는 뷰의 내용을 출력할 수 있습니다.
사용법은 아래와 같이 뷰파일을 지정한 후 dispather 를 호출합니다.
dispacher 의 예제
class BBS extends Controller() {
function BBS() { }
function goWriteForm() {
$this->result_uri = 'write.html';
$this->dispatcher();
}
function execute() {
$this->goWriteForm();
}
}
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" 의 경로에 파일이 있는경우
Spac메소드 레퍼런스/redirect2010. 1. 1. 20:52
redirect 메소드는 현재 페이지에서 특정페이지로 바로 이동시키는 역할을 합니다.
redirect 메소드를 호출하기전에 Controller 의 멤벼변수인 result_uri 에 이동시킬 주소를 지정합니다.
아래는 모델클래스가 호출되면 즉시 다른 페이지로 이동되로록 하는 예제입니다.
위 메소드가 호출되면 브라우저의 주소 자체가 변경되어 이동하게됩니다.
redirect 메소드를 호출하기전에 Controller 의 멤벼변수인 result_uri 에 이동시킬 주소를 지정합니다.
아래는 모델클래스가 호출되면 즉시 다른 페이지로 이동되로록 하는 예제입니다.
class writeBBS extends Controller {
function writeBBS() {}
function execute() {
$this->result_uri = "http://www.daum.net";
$this->redirect();
}
}
function writeBBS() {}
function execute() {
$this->result_uri = "http://www.daum.net";
$this->redirect();
}
}
위 메소드가 호출되면 브라우저의 주소 자체가 변경되어 이동하게됩니다.
Spac메소드 레퍼런스/initController2010. 1. 1. 20:45
initController 메소드는 Spac Controller 의 환경을 초기화하는 역할을 합니다.
Spac Controller의 메소드를 상속받아 사용하기 위해선 이 초기화 메소드를 반드시 호출해야 합니다.
Spac 에서는 사용자가 작성한 모델클래스에서 Controller 를 확장하여 사용하는 경우에 이 초기화 메소드를 자동으로 호출하도록 구성되어 있으므로 사용자가 별도로 이 초기화 메소드를 호출할 필요는 없습니다.
다만, Spac 에서 initController 를 자동으로 호출하는 시점은 사용자 모델클래스의 생성자가 호출 된 이후의 시점이므로 모델클래스의 생성자 안에서 Spac Controller의 내부 매소드를 상속받아 사용하고자 하는경우에는 직접 initController 를 호출해야 합니다.
1. Spac 이 자동으로 initController 를 호출한 후에 사용하는 예제
위 예제에서는 "getControllerInstance" 를 사용하였습니다.
이 메소드는 Spac Controller의 에서 상속받은 메소드입니다.
위 처럼 MyClass 생성자에서 사용하지 않는 경우에는 Controller 의 초기화 메소드인 initController 를 호출하지 않아도 Spac Controller 에서 자동으로 초기화를 수행해 줍니다.
2. 사용자의 모델클래스 생성자안에서 Spac Controller 의 메소드를 사용할 경우
위처럼 사용자 모델클래스인 MyClass 의 생성자인 "MyClass" 내부에서 getControllerInstance 를 사용하고 자 할 경우에는 먼저 initController를 호출해야 합니다.
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();
//이하 사용자 프로그램 구성
}
}
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() {
//이하 사용자 프로그램 구성
}
}
function MyClass () {
$this->initController();
$this->getControllerInstance("MyExtClass");
}
function execute() {
//이하 사용자 프로그램 구성
}
}
위처럼 사용자 모델클래스인 MyClass 의 생성자인 "MyClass" 내부에서 getControllerInstance 를 사용하고 자 할 경우에는 먼저 initController를 호출해야 합니다.