'cakePHP'에 해당되는 글 3건

  1. 2008.05.15 CakePHP의 설정 클래스
  2. 2008.05.15 CakePHP에서 데이터베이스 설정
  3. 2008.05.15 CakePHP의 설치
웹 개발2008.05.15 10:27

Configuration 클래스

CakePHP에서 몇 가지 설정이 필요함에도 불구하고, 설정은 가끔은 사용자 어플리케이션을 위해서는 사용자의 설정 룰을 따르는 것이 유용할 때가 있다. 사용자 설정은 변수 또는 상수를 정의해서 사용한다. 이들 변수나 상수를 사용할 때마다 설정 파일을 포함해야 한다.

CakePHP의 새로운 Configure 클래스는 어플리케이션이나 실행시에 특정값을 저장하고, 읽을 수 있다. 이 클래스에는 무엇이든지 저장할 수 있으므로 주의가 필요하다. 이 클래스의 사용은 일반 코드와 다른 곳에서 하는 것이 좋다. Configure 클래스의 주된 목적은 여러 object에서 공동으로 사용하는 변수를 한 곳에 집중하는 데 있다.

configure 클래스는 singleton으로 행동한다, 이 클래스의 method는 어플리케이션의 어디에서건 호출할 수 있다.

Configure Methods

write

write(string $key, mixed $value)

write() 함수는 어플리케이션의 설정에서 데이터를 저장하기 위해서 사용한다.

Configure::write(‘Company.name’, ‘Pizza, Inc.’);
Configure::write(‘Company.slogan’, ‘Pizza for your body and soul’);


 

$key 파라미터에서 dot을 사용하는 것에 유의하라. 이를 사용하면 설정을 논리 그룹으로 관리할 수 있다.
다음과 같이 한번에 호출할 수도 있다.

Configure::write(
 
Company’.array(‘name’ => ‘Pizza, Inc.’, ‘slogan’ => ‘Pizza for your body and soul’)
);

Configure::write(‘debug’, $int) 를 사용하여 debug 모드와 프로덕션 모드를 스위치할 수 있다.

read

read(string $key = ‘debug’)

어플리케이션에서 설정데이터를 읽을 때 사용한다. key를 지정하면, key에 대한 데이터를 반환한다. 위에서 write()로 함수로 설정한 key를 읽으려면 다음과 같이 한다.

Configure::read(‘Company.name’);
Configure::read(‘Company.slogan’);
Configure::read(‘Company’);
array(‘name’ => ‘Pizza, Inc.’, ‘slogan’ => ‘Pizza for your body and soul’)


delete

 delete(string $key)

설정에서 해당 key에 관한 정보를 삭제한다.

Configure::delete(‘Company.name’);


load

load(string $path)

load는 파일로부터 설정 데이터를 읽는다.

// /app/config/messages.php
<?php
$config[‘Company’][‘name’] = ‘Pizza, Inc.’;
$config[‘Company’][‘slogan’] = ‘Pizza for your body and soul’;
$config[‘Company’][‘phone’] = ‘555-5555-5555’;
?>

<?php
Configure::load(‘messages’);
Configure::read(‘company.name’);
?>

먼저 messages.php 파일에서 $config 배열에 key-value 쌍으로 설정 값을 미리 설정해놓았다. 이를 load() 함수를 사용하여 읽었다. load() 함수로 읽으면 이 전에 설정한 값은 load()로 읽은 것으로 대체된다.

CakePHPcore 설정 변수

Configure 클래스는 core CakePHP 설정 변수를 관리하기 위해서 사용한다. 이들 변수는 /app/config/core.php 에 있다.

설정 변수           | 설명
-------------------------------------------------------------------------
debug              | CakePHP의 디버깅 출력을 변경한다.
                  
| 0 : 프로덕션 모드다. 디버깅 출력을 하지않는다.
                  
| 1 : error, warning을 출력한다.
                  
| 2 : error, warning, SQL을 출력한다.
                  
| 3 : error, warning, SQL, 콘트롤러 덤프를 출력한다.
App.bakeUrl        | apache 웹 서버의 mod_rewrite를 사용하지 않는다면
                   | 이 설정을 활성화해야 한다
.
                   |
그리고 .htaccess 파일도 삭제해야 한다.
Routing.admin      | CakePHPadmin route의 장점을 사용하지 않을 거라면
                   | 이 설정을
Cache.disable      | true로 설정하면, 사이트 전체에 캐싱을 사용하지 않는다.
Cache.check        | true로 설정하면, view 캐싱을 가능하게 한다.
                   |
캐싱을 가능하게 하는 것은 콘트롤러를 필요로 한다,
                   | 하지만 이 변수는 콘트롤러의 설정을 검사한다.
Session.save       | CakePHPSession을 위한 저장장소로 어떤 것을 사용할
                   | 것인지를 결정한다
.
                  
| php : PHPsession 저장장소를 이용한다.
                  
| cake : /app/tmp 에 저장한다.
                  
| database:session 데이터를 데이터베이스 테이블에 저장한다.
                  
| /app/config/sql/sessions.sql SQL을 이용하여 테이블을
                   | 생성해야 한다
.
Session.table      | session 정보를 저장하는 테이블 이름을 지정한다.
Session.database   | session 정보를 저장하는 데이터베이스
Session.cookie     | session을 추적하는데 사용할 cookie 이름
Session.timeout    | 기본 session timeout. 초로 표현한다.
                   |
실제 값은 Security.level에 의존한다.
Session.start      | true로 설정하면 session은 자동으로 시작한다.
Session.checkAgent | false로 설정하면, CakePHP session은 브라우저가
                   |
requests 사이에 바뀌었는지를 검사하지 않는다.
Security.level     | CakePHP 보안 등급. Session.tiemout에서 정의한 Session
                   | timeout
은 이 값에 따라 다음과 같이 곱해서 사용한다.
                   
| high = x 10
                  
| medium = x 100
                  
| low = x 300
Security.salt      | security hashing에 사용하는 무작위 문자열
Acl.classname,     | CakePHPAccess Control List 기능을 위해서
Acl.database       | 사용되는 상수


Configure
클래스는 실행시에 core 설정의 세팅을 읽거나 쓸 수 있다. 어플리케이션의 제한적인 부분에서 디버그 옵션을 바꾸거나 할 때 사용할 수 있다.

신고
Posted by 무한루프 달리만듦

댓글을 달아 주세요

웹 개발2008.05.15 10:19

CakePHP의 데이터베이스 설정은 app/config/database.php 파일을 이용한다. app/config/database.php.default 파일을 열어보면 예제를 볼 수 있다.


var $default = array('driver' => 'mysql',
                     '
persistent' => false,
                     'host' => 'localhost',
                     '
login' => 'cakephp',
                     '
password' => 'password',
                     '
database' => 'cakephp',
                     '
prefix' => 'cp_');

CakePHP의 데이터베이스 연결은 model에서 $useDbConfig 프로퍼티에 다른 연결을 설정하지 않으면, 데이터베이스 연결에 $default 연결을 사용한다.
만일 어플리케이션에 다른 데이터베이스 연결을 추가한다면, $default와 같은 배열을 다른 이름으로 하나 더 만들고, 예를 들면 $legacy, 이를 사용하는 model에서 $useDbConfig = ‘legacy’; 를 설정하여 사용한다.

Key            | Value
driver         | 데이터베이스 드라이버의 이름이다. 다음 이름을 사용할 수 있다.
               | mysql, postgress, sqlite, pear-drivername,
               | adodb-drivername, mssql, oracle, odbc
persistent     | 데이터베이스에 persistent 연결을 사용할 것인지를 true,
               | false로 표시한다.
host           | 데이터베이스 서버의 hostname 또는 ip 주소
login          | 데이터베이스 계정의 username
password       | 데이터베이스 계정의 암호
database       | 연결할 데이터베이스의 이름
prefix         | 데이터베이스의 테이블 이름에 사용하는 prefix 값
               | prefix를 사용하지 않으면 비워둔다.
port           | 데이터베이스 서버와 연결에 사용할 TCP 포트값
encoding       | 데이터베이스 서버에 보낼 SQL 문장의 character set
schema         | postgressSQL을 사용할 때 사용할 schema를 지정한다.

prefixmodel이 아닌 테이블을 위한 것이다. 예를 들어 Apple, Flavor 모델을 위해서 join 테이블을 만든다면, 이들의 이름은 prefix_apples_prefix_flavors 가 아닌 prefix_apples_flavors가 되어야 한다, 그리고 prefix 설정은 ‘prefix_’ 로 적는다.
신고
Posted by 무한루프 달리만듦

댓글을 달아 주세요

웹 개발2008.05.15 09:21

CakePHP는 간단하게 웹 서버의 도큐먼트 루트에 압축을 푸는 것으로 설치할 수 있다. 또는 복잡하지만 원하는 대로 설치할 수도 있다. 여기서는 개발, 프로덕션 그리고 고급 설치방법 등 세 가지 설치 방법을 살펴볼 것이다.

  • 개발용 설치 : 가장 쉽다. CakePHP 설치 디렉토리 이름을 그대로 어플리케이션의 URL로 사용한다. 보안에는 취약하다.
  • 프로덕션용 설치 : 웹 서버의 도큐먼트 루트를 설정할 수 있어야 한다. URL이 깔끔하다. 보안이 잘된다.
  • 고급 설치 : 몇 가지 설정으로 CakePHP를 파일시스템의 다른 곳에 둘 수 있다. 이로써 하나의 CakePHP 코어 라이브러리를 다른 CakePHP 어플리케이션과 공유할 수 있다.


개발용 설치

단지 CakePHP를 웹 서버의 도큐먼트 루트에 설치한다. 웹 서버의 도큐먼트 루트가 /var/www/html 이라면, 개발용 설치된 파일시스템은 다음과 같을 것이다.

/var/www/html
   
/cake
   
/app
   
/cake
   
/docs
   
/index.php
   
/vendors

CakePHP의 어플리케이션을 보기위해서는 http://your.domain.com/cake/ 를 브라우저로 보면된다.

프로덕션용 설치

프로덕션에서 이용하기 위한 설정이라면, 웹 서버의 도큐먼트 루트를 바꿀 수 있다. 프로덕션 설치를 선택하는 것은 도메인 전체가 하나의 CakePHP 어플리케이션이라는 것을 의미한다. 프로덕션 설치는 다음과 같은 레이아웃을 갖는다.

/path_to_cake_install/
   
/app
   
/webroot
   
/cake
   
/docs
   
/index.php
   
/vendors

만약 웹 서버로 아파치를 이용한다면 DocumentRoot 다음과 같이 수정한다.

DocumentRoot /path_to_cake_install/app/webroot

CakePHP 어플리케이션을 보려면, http://your.domain.com 을 브라우저로 보면된다.

고급 설치

CakePHP를 다른 곳에 설치하려는 많은 이유가 있을 것이다. 여기서는 CakePHP 디렉토리를 파일시스템에 어떻게 나눌 수 있는 지를 소개한다.

Cake 어플리케이션에는 다음의 세 개의 메인 파트가 있다.

  1. 코어 CakePHP 라이브러리 /cake
  2. Cake로 제작한 어플리케이션 /app
  3. 어플리케이션의 루트 /app/webroot

이들 각 디렉토리는 웹 서버에서 접근해야 하는 webroot를 제외하고 파일 시스템의 어디든 위치할 수 있다. Cake에 따로 알려주기만 하면, webroot 폴더도 app 폴더 밖에 두어도 된다.

이렇게 하려면, /app/webroot/index.php 를 수정해야 한다. 여기에는 수정해야 할 세 개의 상수가 있다.

  • ROOT : app 폴더를 포함하는 디렉토리의 패쓰를 적는다.
  • APP_DIR : app 폴더의 패쓰를 적는다.
  • CAKE_CORE_INCLUDE_PATH : CakePHP 라이브러리 폴더의 패쓰를 적는다.

다음 예를 보면 고급 설치에 대해서 잘 이해가 될 것이다.

  • CakePHP의 기본 라이브러리는 /use/lib/cake 에 둘 것이다.

  • 어플리케이션의 webroot/var/www/mysite/ 에 둘 것이다.

  • 어플리케이션의 app 디렉토리는 /home/me/mysite 에 둘 것이다.

그러면 webroot/var/www/mysite/index.php 파일을 열어 ROOT, APP_DIR, CAKE_CORE_INCLUDE_PATH를 다음과 같이 수정한다.

if (!defined(‘ROOT’)) {
  define(‘ROOT’, DS.’home’.DS.’me’);
}
if (!defined(‘APP_DIR’)) {
 
define(‘APP_DIR’, ‘mysite’);
}
if (!defined(‘CAKE_CORE_INCLUDE_PATH’)) {
 
define(‘CAKE_CORE_INCLUDE_PATH’, DS.’usr’.DS.’lib’.DS.’cake’);
}

이 렇게 해서 mysite 를 위한 CakePHP 설정이 끝났다. 같은 호스트에서 다른 프로젝트를 역시 CakePHP를 사용하여 작업하려면 CakePHP의 코어 디렉토리는 그대로 두고, app 디렉토리와 webroot 디렉토리를 새로 만들고, webroot의 index.php를 수정하면 된다.

신고
Posted by 무한루프 달리만듦

댓글을 달아 주세요