CI 코드
| 서치 | |
|---|---|
|
2007년 4월에 다음에 있는 개인 블로그에 쓴 글입니다.(퍼갈시 출처를 반드시 명기해주시기 바랍니다)
php4와 php5를 지원하는데다 여러 라이브러리 등과도 효과가 좋아 얼마전 진행했었던 국회의원 사이트 제작에도 썼었다(지금 결과는 그다지 좋지 않지만)
그런데 이 프레임워크를 사용하다 보면 2가지 이상한 걸 발견하게 된다.
가령 페이지의 처음을 말하는 index 라는 단어는 이렇게 controller 디렉토리에 파일이 있다고 가정하면
index.php
이 파일의 클래스명은 index가 되어야 하고 상속받는 클래스는 controller 클래스가 된다.
여기서 자세히 봐야 할 건 index 이다. codeigniter의 class 구조에서 index 메소드는 메소드명이 url에 들어가 있지 않을 경우 기본 실행되는데, 이때 php class 구조는 class의 생성자 메소드가 클래스명이 되어야 한다는 것이다.
여기서 문제가 발생한다. 만약 여기서 다음과 같이 index.php 파일이 작성되어 있다면
class index extends Controller { function index () { parent::Controller(); echo "Class 생성자"; }
function index () { echo "메소드가 지정되어 있지 않으면 기본적으로 실행되는 메소드"; } }
이 경우 에러가 발생한다. 왜냐면 php는 클래스를 상속했을때 메소드를 중복해서 정의할 수 있지만 상속된 클래스가 아닌 경우는 중복해서 정의할 수 없다.
위와 같은 경우 내가 말했던 것처럼 codeigniter 구조에 따르면 index 클래스 파일을 찾고 메소드 명이 지정되어 있지 않으면 index 메소드가 실행되어야 하는데 이때 index 메소드가 클래스 생성자가 되버리는 것이 문제다.
또 굳이 이런 문제가 아니더라도 list 등의 php 언어 구조를 메소드명으로 사용할 수 없다. 물론 define 등의 함수는 상관없지만 php 언어 구조만큼은 그게 안된다. 따라서 같이 올린 첨부파일을 보면 이와 같은 사례에 대해 직접 만들어서 diff로 떠놨으니 이런게 필요한 분이라면 다운받아 쓰시길 바란다.
첨부파일을 받아 적용하게 되면 다음과 같이 재 정의되어야 한다.
class indexController extends Controller { function indexController () { parent::Controller(); echo "Class 생성자"; }
function indexMethod () { echo "메소드가 지정되어 있지 않으면 기본적으로 실행되는 메소드"; }
function listMethod () { echo "이것은 언어 구조입니다"; } }
파일명은 동일하게 사용한다. 후에 조금 여지가 된다면 index 만큼은 좀 예외로 남겨두고 싶다.(할까..) |
|
| 번호 | 제 목 | 글쓴이 | 날짜 | 조회 | 추천수 |
|---|---|---|---|---|---|
| 580 | CodeIgniter SimpleXML library [0] | 타로 | 2012-02-05 | 29 | 0 |
| 577 | CI 와 Smarty 템플릿의 결합 [2] | 불의회상 | 2012-01-26 | 156 | 0 |
| 573 | Okada Design Blog 소개 [3] | 타로 | 2012-01-12 | 272 | 0 |
| 568 | woctopus 계정관리도구 [2] | milosz | 2012-01-09 | 211 | 0 |
| 566 | 업로드된 이미지 정사각형으로 썸네일 만드는 함수 [3] | 불의회상 | 2012-01-06 | 221 | 0 |
| 554 | 코드 이그나이터를 접하고 처음으로 만들어본 객체 입.. [6] | 내일은 | 2011-11-11 | 1246 | 0 |
| 528 | 모델코드 생성기 [25] | 불의회상 | 2011-10-13 | 1144 | 1 |
| 525 | ci memo + tank_auth [2] | milosz | 2011-10-04 | 943 | 0 |
| 512 | 포럼소스를 2.0.1 버전에 맞게 수정하였습니다. [2] | 탱크 | 2011-04-02 | 3546 | 2 |
| 509 | CI 메뉴얼 CHM 버전(영문 2.0) [1] | 브라이언 | 2011-03-30 | 1242 | 0 |
| 508 | CI 메뉴얼 CHM 버전 [0] | 브라이언 | 2011-03-30 | 1382 | 0 |
| 494 | ci memo [8] | pam | 2011-02-20 | 1971 | 1 |
| 489 | CI 압축 프로그램 [2] | 준이 | 2010-12-27 | 1637 | 0 |
| 482 | 듬직이님의 헬퍼 ip 부분 추가. [0] | 나이유미 | 2010-11-22 | 1998 | 0 |
| 475 | SELECT() 사용 시 문제점 [2] | 마냐 | 2010-09-16 | 2742 | 0 |
| 473 | CI의 사용자 인증 소스파일 [2] | corean | 2010-09-12 | 3142 | 0 |
| 471 | CI 1.7.2 한글 언어팩 1.1 [1] | cleansugar | 2010-08-26 | 2221 | 0 |
| 470 | Upload 라이브러리 수정본 [0] | sisco | 2010-07-28 | 2398 | 0 |
| 464 | iScaffold [4] | 준이 | 2010-07-26 | 1981 | 0 |
| 458 | 이미지 등분하기_helper [0] | 마냐 | 2010-06-18 | 2226 | 0 |

