Development

Documentation/ko_KR/summary/The_Definitive_Guide_to_symfony (diff)

You must first sign up to be able to contribute.

Changes between Version 11 and Version 12 of Documentation/ko_KR/summary/The_Definitive_Guide_to_symfony

Show
Ignore:
Author:
withrain (IP: 121.138.115.186)
Timestamp:
04/10/09 08:31:08 (9 years ago)
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/ko_KR/summary/The_Definitive_Guide_to_symfony

    v11 v12  
    339339}}} 
    340340 
     341'''심포니 데이터베이스 스키마''' 
     342 
     343사용하고자 하는 데이터베이스가 어떤 것이든 심포니에서 사용할 오브젝트 모델로 바꾸어 주어야만 한다. ORM 툴은 관계형 모델을 매핑하기 위한 정보가 필요하며 이를 스키마라고 한다. 스키마는 테이블과 테이블간의 관계, 컬럼속성등이 포함된다. 심포니는 스키마를 표현하기 위해 YML 신택스를 사용한다. 심포니에서 사용하는 스키마파일 schema.yml 은 최상위 config/ 디렉토리에 위치해야만 한다. 아래는 두개의 테이블이 정의되어 있는 샘플 스키마 파일이다. 
     344 
     345{{{ 
     346propel: 
     347  blog_article: 
     348    _attributes: { phpName: Article } 
     349    id: 
     350    title:       varchar(255) 
     351    content:     longvarchar 
     352    created_at: 
     353  blog_comment: 
     354    _attributes: { phpName: Comment } 
     355    id: 
     356    article_id: 
     357    author:      varchar(255) 
     358    content:     longvarchar 
     359    created_at: 
     360}}} 
     361 
     362'''YML 신택스''' 
     363 
     364스키마 파일에서 첫번째 키는 데이터베이스 커넥션 이름이다.(위 예제에서는 propel) 하나의 커넥션은 여러개의 테이블을 가질수 있고 테이블은 여러개의 컬럼을 가질수 있다. 키는 :(콜론)으로 끝나며 구조는 하나 또는 그 이상의 들여쓰기로 이루어 진다(탭이 아니라 공백이어야 한다). 테이블 이름은 camelCase 형식을 따른다. 즉 blog_article 의 실제 테이블명은 BlogArticle 이 된다. id 필드는 자동으로 PK 로 인식되며 created_at 필드는 자동으로 등록일로 판단하여 레코드가 인서트될때 자동으로 채워지게 된다. 
     365 
     366'''모델 클래스''' 
     367 
     368모델 클래스를 만들기 위해 스키마 파일을 사용한다. 커맨드 라인에서 스키마파일을 가지고 모델 클래스를 자동으로 생성해 준다. 
     369 
     370{{{ 
     371> php symfony propel:build-model 
     372}}} 
     373 
     374위 명령으로 lib/model/om/ 디렉토리에 아래 파일들이 생성된다. 
     375 * BaseArticle.php 
     376 * BaseArticlePeer.php 
     377 * BaseComment.php 
     378 * BaseCommentPeer.php 
     379그리고 lib/model 디렉토리에는 아래 파일들이 생성된다. 
     380 * Article.php 
     381 * ArticlePeer.php 
     382 * Comment.php 
     383 * CommentPeer.php 
     384 
     385lib/model 에 있는 클래스는 lib/model/om 에 있는 클래스를 상속받은 클래스이다. 만약 어떤 클래스에 자신만의 메소드를 추가하고 싶다면 lib/model 클래스에 추가하여야 한다. 심포니의 build-model 명령은 lib/model/om 에 있는 클래스 파일을 덮어 쓰기 때문이다. 하지만 lib/model 에 있는 클래스는 덮어쓰지 않는다. 이 모델 클래스에는 해당 테이블에 데이터를 추가,삭제,수정할 수 있는 모든 메소드들을 포함하고 있으며 테이블의 레코드를 객체로 추출하여 핸들링할 수 있는 메소드를 포함하고 있다. 
     386 
     387