Erzsamatory Weblog


※ 외국 문서 번역 자료입니다.

원문: Fundamentals - Conventions (http://goo.gl/9zkZWp)

Yii Framework는 어플리케이션을 개발하는데에 있어서 일반 규칙을 제공합니다. 일반 규칙을 준수함으로써 개발자는 복잡한 설정 파일을 힘들게 만들 필요 없이 세련된 Yii 어플리케이션을 개발할 수 있습니다. 물론 개발자의 필요에 따라 Yii Framework는 설정 파일에 의하여 커스터마이징될 수도 있습니다.

지금부터 Yii 어플리케이션을 개발할 때 알아야 하는 일반 규칙에 대해서 설명하겠습니다. 편의를 위하여, WebRootYii Framework가 설치된 디렉토리인 것으로 가정하겠습니다.

사용자 삽입 이미지


1. URL


기본적으로 Yii Framework는 URL을 다음과 같은 포맷으로 인식합니다.
http://hostname/index.php?r=ControllerID/ActionID

GET 변수인 r은 Yii Framework에 의해서 컨트롤러 또는 액션으로 해석될 수 있는 경로를 말합니다. 만약 ActionID가 생략되는 경우에 컨트롤러에서는 기본 액션인 defaultAction을 불러옵니다. 또한 ControllerID가 생략되는 경우에는 (또는 r 이 생략되는 경우에는) Yii 어플리케이션에서 기본 컨트롤러인 defaultController를 불러옵니다.

개발자는 CUrlManager 컴포넌트를 이용하여 http://hostname/ControllerID/ActionID.html과 같이 검색에 최적화된 URL을 만들 수도 있습니다. 이 기능에 대한 자세한 설명은 URL 관리자 페이지에서 다루도록 하겠습니다.

2. Code


Yii Framework에서는 변수와 함수, 클래스 이름을 지정할 때 카멜 케이스(Camel Case) 방식을 사용하는 것을 권장합니다. 카멜 케이스 방식이란 이름에 여러 개의 단어가 있는 경우 각 단어의 첫 글자를 대문자로 적는 것을 의미합니다. 공백이 없이 이름이 구성되며 한 단어로 구성되는 경우에도 단어의 첫 글자는 대문자로 만들어야 합니다. 하지만 여기에서 주의할 점은 변수와 함수 이름을 정의할 때에는 맨 앞 글자는 소문자로 적는 것이 좋습니다. 왜냐하면 클래스 이름과의 구별을 쉽게 하기 위해서입니다. (e.g. $basePath, runController(), LinkPager)

클래스 내부 요소인 private 요소를 생성할 때에는 해당 요소 이름의 맨 앞에 언더스코어를 넣는 것이 좋습니다. 이것은 다른 공용 변수와의 구별을 위함입니다. (e.g. $_actionList)

PHP 5.3.0 이전 버전에서는 네임스페이스를 지원하지 않기 때문에, 클래스 이름을 정의할 때에는 중복으로 인한 충돌을 피하기 위하여 특별한 방법이 필요합니다. Yii Framework에서는 모든 클래스 이름에 대해서 맨 앞에 C 를 넣는 방법을 사용합니다.

컨트롤러 클래스를 생성할 때에는 이름 맨 끝에 Controller를 붙이는 특별한 방법을 필요로 합니다. 컨트롤러 ID는 컨트롤러 클래스 이름에서 맨 앞의 단어를 소문자로 적은 것입니다. 여기에서 맨 끝의 Controller는 컨트롤러 ID에서는 필요 없으므로 잘라버립니다. 예를 들어, PageController 클래스의 컨트롤러 ID는 page입니다. 이러한 방법은 Yii 어플리케이션이 좀더 안정적으로 작동될 수 있도록 해줍니다. 이 방법은 URL을 조금 간단하게 만들어주는데에도 기여합니다. (e.g. /index.php?r=page/index instead of /index.php?r=PageController/index)


3. 설정


설정 파일은 키 값 배열로 이루어져 있습니다. 각 키는 각 설정 오브젝트의 이름을 나타내고, 각 값은 해당 설정 오브젝트의 초기값을 나타냅니다. 예를 들어, array('name' => 'My application', 'basePath' => './protected') 는 name과 basePath 라는 이름을 가지는 속성 값을 정의합니다.

대부분의 속성 값은 개발자가 임의로 수정할 수 있습니다. 하지만 기본 값이 정해진 속성 값은 개발자가 직접 수정할 수 없습니다. 이렇게 속성 값이 고정되어야 하는 이유는 초기 값이 여러 곳의 요소에 대해서 적절하게 전달이 되어야하기 때문입니다. 쉽게 말하면, 초기화에 필요한 속성 값이 중간에 변경되면 Yii 어플리케이션이 오작동할 우려가 있기 때문이라고 할 수 있겠습니다.


4. 파일


파일에 대한 코딩 가이드라인은 해당 파일의 성격에 따라 달라집니다.

개발자는 클래스 파일의 이름을 해당 파일에 정의된 공용 클래스(public class)의 이름과 동일하게 만들어야 합니다. 예를 들어, CController 공용 클래스가 정의된 클래스 파일의 이름은 CController.php가 됩니다. 이렇게 정의된 공용 변수는 다른 클래스에서도 사용할 수 있어야 합니다. 각각의 클래스 파일은 최소한 한 개 이상의 공용 클래스를 포함하고 있어야 합니다. 외부에서는 접근할 수 없는 내부 클래스(private class)는 공용 클래스와 함께 같은 파일에 포함될 수 있습니다.

뷰 파일은 뷰 네임과 동일하게 이름이 만들어져야 합니다. 예를 들어, index 뷰 파일의 이름은 index.php가 됩니다. 뷰 파일은 출력을 목적으로 하는 파일로, HTML과 PHP 코드를 포함하고 있는 파일을 말합니다.

설정 파일은 개발자가 마음대로 이름을 정할 수 있습니다. 왜냐하면 Yii Framework에서는 기본 메소드를 통해서 개발자가 직접 설정 파일을 불러오는 방법을 사용하고 있기 때문입니다. 이 때 설정 파일 이름은 메소드의 매개변수로 Yii Framework에 전달됩니다.


5. 디렉토리


Yii Framework에서 기본으로 제공하는 디렉토리는 필요에 따라 개발자에 의해서 수정될 수도 있습니다. 다음은 Yii Framework에서 기본으로 제공하고 있는 디렉토리입니다.
  • WebRoot/protected: 이 디렉토리는 Yii 어플리케이션의 기본 디렉토리입니다. 이 디렉토리에 있는 모든 파일들은 보안에 민감하기 때문에 외부에서는 이 디렉토리에 접근할 수 없어야 합니다. 이 디렉토리와 더불어 하위 모든 파일과 디렉토리에는 웹에서 접근이 불가능해야 합니다. Yii Framework에서는 이 디렉토리에 application 이라는 가명을 사용합니다. 이 디렉토리 경로는 CWebApplication::basePath 메소드를 이용하여 커스터마이징할 수 있습니다.
  • WebRoot/protected/runtime: 이 디렉토리에는 Yii 어플리케이션이 실행되는 동안에 생성되는 각종 임시 파일들이 저장됩니다, 웹 서버는 이 디렉토리에 접근할 수 있어야 하며, 이 디렉토리에 쓸 수 있는 권한이 있어야 합니다. 이 디렉토리 경로는 CApplication::runtimePath 메소드를 이용하여 커스터마이징할 수 있습니다.
  • WebRoot/protected/extensions: 이 디렉토리에는 써드-파티 확장요소가 저장됩니다. Yii Framework에서는 이 디렉토리에 ext 라는 가명을 사용합니다. 이 디렉토리 경로는 CApplication::extensionPath 메소드를 이용하여 커스터마이징할 수 있습니다.
  • WebRoot/protected/modules: 이 디렉토리에는 어플리케이션에서 사용되는 모듈이 저장됩니다.
  • WebRoot/protected/controllers: 이 디렉토리에는 어플리케이션에서 사용되는 모든 컨트롤러 클래스가 저장됩니다. 이 디렉토리 경로는 CWebApplication::controllerPath 메소드를 이용하여 커스터마이징할 수 있습니다.
  • WebRoot/protected/views/ControllerID: 이 디렉토리에는 각 컨트롤러 클래스에서 사용되는 뷰 파일이 저장됩니다. ControllerID는 각 컨트롤러의 ID를 의미합니다. 이 디렉토리 경로는 CController::viewPath 메소드를 이용하여 커스터마이징할 수 있습니다.
  • WebRoot/protected/views/layouts: 이 디렉토리에는 어플리케이션에서 사용되는 모든 레이아웃 뷰 파일이 저장됩니다. 이 디렉토리 경로는 CWebApplication::layoutPath 메소드를 이용하여 커스터마이징할 수 있습니다.
  • WebRoot/protected/views/system: 이 디렉토리에는 Yii Framework에서 사용되는 모든 시스템 뷰가 저장됩니다. 시스템 뷰는 오류나 기타 시스템 예외 상황 등을 출력할 때 사용되는 템플릿 파일을 의미합니다. 이 디렉토리 경로는 CWebApplication::systemViewPath 메소드를 이용하여 커스터마이징할 수 있습니다.
  • WebRoot/assets: 이 디렉토리에는 Yii Framework에서 사용되는 모든 공개 요소들이 저장됩니다. 이 디렉토리에 저장된 모든 파일들은 내부적으로 사용되는 것이 원칙이지만, 웹 유저가 이 디렉토리에 접근할 수 있으므로 외부에 공개될 수 있는 파일이어야 합니다. 또한 이 디렉토리는 웹 서버에서 접근할 수 있어야 합니다. 이 디렉토리 경로는 CAssetManager::basePath 메소드를 이용하여 커스터마이징할 수 있습니다.
  • WebRoot/themes: 이 디렉토리에는 Yii 어플리케이션에 적용되는 다양한 테마가 저장됩니다. 하위에 있는 모든 디렉토리는 각각 테마 한 개씩을 포함하고 있습니다. 디렉토리 이름은 테마 이름과 일치해야 합니다. 이 디렉토리 경로는 CThemeManager::basePath 메소드를 이용하여 커스터마이징할 수 있습니다.


6. 데이터베이스


대부분의 웹 어플리케이션은 데이터베이스를 기반으로 작동합니다. 효율성을 위하여, Yii Framework에서는 데이터베이스 테이블과 컬럼에 대하여 다음과 같은 명명 규칙을 권장합니다. 하지만 다음에서 소개하는 모든 규칙들이 반드시 Yii Framework에 적용되어야 하는 것은 아닙니다.

  • 데이터베이스 테이블과 컬럼의 이름은 소문자로 구성되어야 한다.
  • 각 단어는 언더스코어를 이용하여 구분한다. (e.g. product_order)
  • 개발자는 테이블 이름을 명명할 때 복수형과 단수형 모두를 사용할 수 있으나, 데이터베이스 테이블 목록의 심플함을 위하여 단수형만 사용하는 것이 좋다.
  • 테이블 이름 앞에 tbl_ 과 같은 접두사를 덧붙이는 방법을 권장한다. 특히 이 방법은 같은 데이터베이스에 여러 개의 어플리케이션이 설치되어 있는 경우 매우 유용하게 사용될 수 있다.


목차
1. 시작하기
     1-1. Yii란 무엇인가?
     1-2. 설치
     1-3. 아파치 웹서버와 Nginx 설정
     1-4. 첫 Yii 어플리케이션 생성

2. 기본 개념
     2-1. 모델-뷰-컨트롤러 (MVC)
     2-2. 엔트리 스크립트
     2-3. 어플리케이션
     2-4. 컨트롤러
     2-5. 모델
     2-6.
     2-7. 컴포넌트
     2-8. 모듈
     2-9. 경로 별칭과 네임스페이스
     2-10. 일반 규칙 (현재 페이지)
     2-11. 개발 흐름 (Workflow)
     2-12. MVC 예제

3. 양식(Form) 사용 연습
     3-1. 개요
     3-2. 모델 생성
     3-3. 액션 생성
     3-4. 양식 생성
     3-5. 테이블 추출
     3-6. 양식 생성기 사용하기

4. 데이터베이스 사용 연습
     4-1. 개요
     4-2. DB 액세스 객체
     4-3. 쿼리 빌더
     4-4. 동적 레코드
     4-5. Relational Active Record
     4-6. 데이터베이스 변환

5. 캐싱
     5-1. 개요
     5-2. 데이터 캐시
     5-3. 부분 캐시
     5-4. 페이지 캐시
     5-5. 동적 컨텐츠

6. Yii 확장
     6-1. 개요
     6-2. 확장 사용하기
     6-3. 확장 생성하기
     6-4. 써드파티 라이브러리 사용하기

7. 테스트
     7-1. 개요
     7-2. Defining Fixtures
     7-3. Unit Testing
     7-4. Functional Testing

원문: http://www.yiiframework.com/doc/guide/
http://www.erzsamatory.net/trackback/94

건전한 댓글 문화를 만들어주시기 바랍니다 ^^
불건전한 댓글이 등록되는 경우 관리자의 임의적 판단으로 삭제될 수 있음을 미리 공지드립니다.

비밀글로 작성하기