CI 묻고 답하기

제목 php 레거시 -> ci 전환 질문
카테고리 CI 2, 3
글쓴이 아잉힘두러 작성시각 2023/11/23 15:04:23
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 901   RSS

안녕하세요.

현재 기업에서 php 5.X 버전대 사용중이며, 프레임워크를 사용하지 않은 흔한 레거시 코드 입니다.

최초에 해당 페이지를 제작할 때 si업체에서 찍어내듯 만들어 놓은 홈페이지 입니다.

개인적인 시간 여유가 많아 해당 페이지를 ci로 전환 해보고 싶은데, 어디서 부터 손을 대야할지 막막합니다.

혹시 경험이 있으신 분들은 어떻게 해결해 나가셨는지 알려주시면 감사하겠습니다.

감사합니다.

 

 다음글 컨트롤러 함수 관련 질문 드립니다. (2)
 이전글 CI4 DB 연결 및 model 질문 (2)

댓글

kaido / 2023/11/24 13:28:06 / 추천 1

레거시 코드이라 하면 스파게티 소스 이라는 전제로 이야기하겠습니다.

우선 얼만큼 분류해야 하는지를 견적을 내보셔야합니다.

CI 2,3 는 전형적인  MVC 코드입니다 . (CI4도 비슷 하지만 일단 예외)

업체가 짜준 소스면 템플릿바 를 넣었을 가능성도 높긴한데 기본적으로 PHP 레거시는 한 페이지 안에 컨트롤러, 모델, 뷰가 전부 섞인 형태입니다.

그럼 최우선으로 모델을 분리해야 합니다.

 

SQL 사용하는 구문은 전부 모델로 빼서 일단 한군데 넣어놓습니다.

그리고나서 종류별로 구분을 지어야 합니다.

회원관련이면 AuthModel 이라든가 MemberModel 이라든가로 묶고, 상품이면 ProductModel 등으로 파일을 분리합니다.

 

그다음은 뷰의 분리 입니다. 

현재 사용되는 페이지는 전부 뷰라고 생각 하고 SQL문은 전부 지워버립니다.

기존에는 뷰페이지에서 SQL을 사용했지만 이제는 모델에서 한번 데이터를 정제하고나서 뷰로 데이터를 넘겨받는거라고 생각 하시면 됩니다.

이건 의외로 어려울건 없습니다.

뷰에서 SQL 사용해서 받음 $data 에 해당 하는것을  컨트롤러에서 모델을 호출받고, 그 데이터를 뷰에 넘겨주기만 하면됩니다.

뷰의 코드는 최대한 건들지 않고 변수명도 맞춰서 넘겨주면 동일하게 호환될것입니다.

 

마지막이 컨트롤러입니다. 의외라고 생각 하시겠지만 MVC 에서 컨트롤러가 마지막에 있는 이유입니다.

의외로 Model은 변화가 없어야 하고 그다음이 View 입니다.

컨트롤러는 요청에 따라서 늘어날수있고 줄어들수있습니다. 최근에는 이걸 엔드포인트 라고 부릅니다.

MVC로 분리하고 나서는 이제 디테일하게 공통으로 쓰는 함수등을 헬퍼나 라이브러리로 빼서 분리합니다.

이 과정에서 include 되어있는 부분은 전부 지워버리고 헬퍼나 라이브러리로 바꿉니다.

 

익숙하면 단순 노가다이고 처음하면 머리가 아프실겁니다.

우선 머리를 비우고 MVC 패턴으로 데이터를 가져와 뷰페이지에 표현 하는 작업을 해보고 하나씩 맞춰 보시면 감이 오실겁니다.

아잉힘두러 / 2023/12/19 13:32:35 / 추천 0
너무바빠서 댓글을 이제 봤네요 정말 좋은 정보 감사드립니다. 덕분에 많은 도움이 될 것 같습니다!!