'설정'에 해당되는 글 2건

  1. 2008.05.15 CakePHP의 설정 클래스
  2. 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 무한루프 달리만듦

댓글을 달아 주세요