loading
본문 바로가기

개발/퍼블리싱 가이드(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
  • 퍼블리싱 관련
    • 시안 확인할 수 있는 경로는 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'){....}
      • 쿠키 네이밍

        • 쿠키명은 대문자로 하고 접두어로 COK_를 넣는다.
          ex)
          $this->input->set_cookie('COK_WORK_CHECK','Y')
          if($this->input->cookie('COK_WORK_CHECK') != 'Y'){....}
      • 파일작성 네이밍

        • 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이 된다
      • 변수 네이밍

        • 카멜케이스 작성법를 사용하지 않고 언더스코어, 소문자로 네이밍 해야 하며 용도와 내용을 나타 내기 위해 합리적으로 이름이 지정되어야함
        • 매우 짧은 단어의 변수는 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 long
          CORRECT 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(){}
      • 함수(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