개발/퍼블리싱 가이드(v1.0)
개발/퍼블리싱 가이드(v1.0) 변경사항
- v1.0 최초 작성 2017-12-15 by hclee@yellotravel.com
- 웹root : /home/jejumobile/html
- 기본 디렉토리 구조 => http://www.jejumobile.kr/h/work/directory
- 사이트맵 => http://www.jejumobile.kr/h/work/sitemap
- 문서포맷
- 파일인코딩 및 페이지 캐릭터셋은 utf-8
- Line Endings는 LF로 적용
- 프론트 페이지 url
- PC 버전 : http://www.jejumobile.kr/h
- 모바일 버전 : http://www.jejumobile.kr/h/mobile
- 리셀러 버전 : http://www.jejumobile.kr/r
- 퍼블리싱 관련
- 시안 확인할 수 있는 경로는 http://www.jejumobile.kr/h/sian/sian.php에서 확인
- 시안 검수완료된 시안은 파일명에 '-ok' 추가
- 검수완료된 원본 파일은 /h/sian/psd 에 위치.
- 파일명 및 위치는 [사이트맵] 참고
- 퍼블리싱 파일은 사이트맵 기준으로 아래의 위치에 작성
- PC 버전은 /h/views/_page(사이트맵기준) => /h/publishing 디렉토리에 파일 작성
- 모바일 버전은 /h/views/_page/mobile(사이트맵기준) => /h/publishing/mobile 디렉토리에 파일 작성
-
페이지내 url, js, image, css 등의 경로는 절대경로로 작성한다.
ex)
<a href="http://www.jejumobile.kr/h">홈</a>
<img src="/h/images/_common/이미지.png">
<link rel="stylesheet" href="/h/css/_common/main.css">
<script src="/h/js/_common/function.js"></script>
-
js 작성위치
- PC, 모바일 같이 사용할 js는 /h/js/_common/에 저장
- PC에서만 사용할 경우 /h/js/_pc/ 디렉토리에 파일 작성
- 모바일에서만 사용할 경우 /h/js/_mobile/ 디렉토리에 파일 작성
- 각 서브에서만 사용할 경우 PC 또는 모바일 js 경로에서 디렉토리 생성후 js 작성
-
ex)
- PC, 모바일 같이 사용할 js => /h/js/_common/function.js (공통함수)
- PC에서만 사용할 js => /h/js/_pc/jquery.common.js (pc에서 사용할 공통 jquery)
- 모바일에서만 사용할 js => /h/js/_mobile/jquery.common.js (모바일에서 사용할 공통 jquery)
- PC 버전 /sample/list.html에서 사용할 js => /h/js/_pc/sample/list.js (/sample/list.html에서 사용할 js)
- 모바일 버전 /mobile/sample/list.html에서 사용할 js => /h/js/_mobile/sample/list.js (/mobile/sample/list.html에서 사용할 js)
-
jquery 적용
- jquery 버전은 3.2.1사용
- jquery ui 버전은 1.12.1 사용하고 기본 테마는 blitzer 사용
- 퍼블리싱시 아래 jquery 영역은 아래와 같이 추가해서 작업
<link rel="stylesheet" href="/h/js/jquery-ui-1.12.1.blitzer/jquery-ui.min.css">
<script src="/h/js/jquery-3.2.1.min.js"></script>
<script src="/h/js/jquery-ui-1.12.1.blitzer/jquery-ui.min.js"></script>
-
css 작성위치
- PC, 모바일 같이 사용할 css는 /h/css/_common/에 저장
- PC 버전은 /h/css/_pc/ 디렉토리에 파일 작성
- 모바일 버전은 /h/css/_mobile/ 디렉토리에 파일 작성
-
image 저장위치
- PC, 모바일 같이 사용할 css는 /h/images/_common/에 저장
- PC 버전은 /h/images/_pc/ 디렉토리에 파일 작성
- 모바일 버전은 /h/images/_mobile/ 디렉토리에 파일 작성
-
링크 경로 작성 법
- {서비스루트}/{경로} => {this->root_url}/{경로} 로 작성 : 루트경로 대신 템플릿 변수인 {this->root_url}로 작성할 것 ex)
-
1)자사 후불입장권 링크
<a href=“/h/prod/postpay”>후불자유입장권</a> => <a href=“{this->root_url}/prod/postpay”>후불자유입장권</a>
-
2)자사 모바일 후불입장권 링크
<a href=“/h/mobile/prod/postpay”>후불자유입장권</a> => <a href=“{this->root_url}/prod/postpay”>후불자유입장권</a>
-
3)리셀러 후불입장권 링크
<a href=“/r/R0001/prod/postpay”>후불자유입장권</a> => <a href=“{this->root_url}/prod/postpay”>후불자유입장권</a>
-
4)리셀러 모바일 후불입장권 링크
<a href=“/r/R0001/mobile/prod/postpay”>후불자유입장권</a> => <a href=“{this->root_url}/prod/postpay”>후불자유입장권</a>
-
개발 관련
-
코드이그나이터를 이용한 MVC패턴으로 개발
- 데이터의 처리(Model)와 비즈니스 로직(Controller), 사용자화면(View) 세가지 요소를 각각 독립적으로 디자인하는것을 의미한다.
- 사용자화면(View)는 코드이그나이터 View/Parser를 쓰지 않고 Template_ 사용([매뉴얼])
- Codeigniter 의 MVC 패턴을 사용하지 않고 단순 php 파일로 처리 하는 경우 inc/noci.php파일을 php 파일 최상단에서 이 파일을 include 하고 사용
- 각 페이지별 컨트롤러 클래스와 메서드 정의는 [사이트맵] 참고
- 메뉴추가 시 config/menus.php에 메뉴 추가한다.
- 기존 홈페이지에서 필요한 url 파일을 만들고 해당 기능의 페이지로 이동하게 해준다.(ex: 기존 후불제 리셀러 업체 페이지)
- 에러처리는 [에러 예제] 참고
- 설정
- 개별 Application 설정은 application/config 에서 파일을 생성하든지 config.php에서 정의
- 모든 Application 설정은 /home/jejumobile/html/jm_constants.php에서 설정해서 사용
- 정의시 클래스 상수로 만들것
- 상수 정의시 JM 접두어 넣을것
- 네이밍룰
세션 네이밍
- 세션명은 대문자로 하고 접두어로 SES_를 넣는다.
ex)
$this->session->set_userdata('SES_WORK_CHECK','Y');
if($this->session->SES_WORK_CHECK != 'Y'){....}
- 세션명은 대문자로 하고 접두어로 SES_를 넣는다.
쿠키 네이밍
- 쿠키명은 대문자로 하고 접두어로 COK_를 넣는다.
ex)
$this->input->set_cookie('COK_WORK_CHECK','Y')
if($this->input->cookie('COK_WORK_CHECK') != 'Y'){....}
- 쿠키명은 대문자로 하고 접두어로 COK_를 넣는다.
파일작성 네이밍
-
Class파일을 제외한 모든 파일은 CamelCase를 사용하지 않고 언더스코어로 소문자로 네이밍 할 것
ex)
INCORRECT CORRECT Application_config.php
Application_Config.php
applicationConfig.php
applicationconfig.php
application_config.php
- Class 파일작성
- 클래스 이름은 항상 대문자로 시작해야합니다. 여러 단어는 CamelCase가 아닌 언더스코어로 구분해야합니다.
- ex)
INCORRECT CORRECT somelibrary.php
someLibrary.php
SOMELIBRARY.php
Some_Library.php
Somelibrary.php
Some_library.php - Controller 클래스는 h/application/controller(프론트페이지), r/application/controller(리셀러), api/application/controller(API) 에서 로직 개발한다.
- Controller 작성 및 템플릿 적용 방법은 [Controller 예제] 참고
- Model 클래스는 sm/models 에서 작성한다.
- 사용자 라이브러리 클래스는 sm/libraries 에서 작성한다.
-
사용자 라이브러리 로딩시 아래와 같이 호출
ex)
$this->load->library('사용자 라이브러리');
- 함수(helper) 파일작성
- 사용자 함수는 sm/helpers 에 _helper로 저장한다.
-
해당 함수(helper)를 로딩시 아래와 같이 호출
ex)
$this->load->helper('사용자함수명');
- 템플릿 파일작성
- 각 application의 views/에서 작성
- views/_frame 에는 레이아웃을 담당하는 프레임파일 작성
현재 _default.html(기본프레임)과 _blank.html(레이아웃이 없는 프레임) 작성됨 -
views/_part 에는 프레임 또는 페이지 파일에 공통으로 사용할 파트 작성
현재 head_script.html이 작성 되어 있으며 <head>...</head> 사이에 위치할 공통 스크립트 영역
템플릿 파일아이디는 part_으로 정의한다.
ex)$this->template->define('part_head_script', '_part/head_script.html')
-
views/_page 에는 콘텐츠영역의 페이지파일을 작성한다.
각 페이지의 디렉토리는 Contrller 클래스명(소문자로), 디렉토리의 페이지 파일명은 각각의 메소드로 매칭한다. [사이트맵] 참고
ex)
$Sample->index()
=> _/page/sample/index.html 또는 _/page/sample.html
$Sample->list()
=> _/page/sample/list.html
- ajax html 파일작성
- 해당 디렉토리에 ajax/디렉토리 생성후 작성
- 메소드명은
$Sample->ajax_html_ajax명();
이고 파일경로는 _/page/sample/ajax/html_{ajax명}.html이 된다
-
Class파일을 제외한 모든 파일은 CamelCase를 사용하지 않고 언더스코어로 소문자로 네이밍 할 것
변수 네이밍
- 카멜케이스 작성법를 사용하지 않고 언더스코어, 소문자로 네이밍 해야 하며 용도와 내용을 나타 내기 위해 합리적으로 이름이 지정되어야함
- 매우 짧은 단어의 변수는 for() 루프의 반복자로만 사용
-
ex)
INCORRECT $j = 'foo'; // single letter variables should only be used in for() loops
$Str // contains uppercase letters
$bufferedText // uses CamelCasing, and could be shortened without losing semantic meaning
$groupid // multiple words, needs underscore separator
$name_of_last_city_used // too longCORRECT for ($j = 0; $j < 10; $j++)
$str
$buffer
$group_id
$last_city
Class 네이밍
- Class명 네이밍
- 파일 작성은 [Class 파일작성]참고
- 클래스 이름은 항상 대문자로 시작해야합니다. 여러 단어는 CamelCase가 아닌 언더스코어로 구분해야합니다.
ex)
INCORRECT CORRECT class superclass
class SuperClass
class Super_class
class Super_class {
public function __construct(){
}
}
- 필드 네이밍
- 클래스의 필드는 [변수작성법] 참고
private
이나protected
속성일 경우 필드명 앞에 언더스코어 추가한다.
ex)
private $_private_var='';
protected $_protected_var='';
- 메소드 네이밍
- 클래스 메소드는 그 기능을 명확히 나타내기 위해 완전히 소문자로되어 있어야 하며, 바람직하게는 동사를 포함해야한다.
- 지나치게 길고 자세한 이름은 피하고 여러 단어는 언더스코어로 구분.
-
ex)
INCORRECT function fileproperties() // not descriptive and needs underscore separator
function fileProperties() // not descriptive and uses CamelCase
function getfileproperties() // Better! But still missing underscore separator
function getFileProperties() // uses CamelCase
function get_the_file_properties_from_the_file() // wordy
class SuperClass
CORRECT function get_file_properties() // descriptive, underscore separator, and all lowercase letters
private
이나protected
속성일 경우 필드명 앞에 언더스코어 추가한다.
ex)
private function _set_private(){}
protected function _set_protected(){}
- Class명 네이밍
함수(helper) 네이밍
- 함수명은 앞에 사용자함수명의 접두어를 추가한다.
ex) helpers/lalala_helpers.php =>function LA_get_lalala(){}
- 네이밍은 [Class 메소드 네이밍] 참고
- 함수명은 앞에 사용자함수명의 접두어를 추가한다.
ajax 네이밍
- 일반 ajax 메소드 네이밍
- 메소드명 앞에 'ajax_' 접두어를 추가한다.
public function ajax_sample(){}
- json ajax
- 메소드명 앞에 'ajax_json_' 접두어를 추가한다.
public function ajax_json_sample(){}
- html ajax
- 메소드명 앞에 'ajax_html_' 접두어를 추가한다.
public function ajax_html_sample(){}
- 템플릿 파일 작성은 [ajax html 파일작성 네이밍] 참고
- 일반 ajax 메소드 네이밍
-
코드이그나이터를 이용한 MVC패턴으로 개발