https://github.com/yks118/Manana-CMS-for-Codeigniter

 

yks118/Manana-CMS-for-Codeigniter

I am using CI4 for personal use. Contribute to yks118/Manana-CMS-for-Codeigniter development by creating an account on GitHub.

github.com

 

기존에 있던 CI3 는 날리고, CI4로 변경하였습니다.

 

제가 사용하고있는..

 

그리고 제가 운영중인 서비스에 사용하는 CI4 의 가장 기초가 되는 부분만 떼어내서 올려두었습니다.

 

샘플도 함께 올려두었으니 참고가 될듯 합니다.

 

뭐, 솔직히 본인은 CI4 에서는 Controller 에서 DB 쿼리를 작성하는데..

 

 

이런 느낌???

( ery.kr 실제 코드;; )

 

CI3 이거나, 타인과의 협업이라면, Model 에 function 미친듯이 만들기도 하는데;;

 

그건 그때그때 팀원 요구사항에 따라 다른것이고..

( 귀찮아서 사전에 요구사항을 받으면 그거대로 만들어 주는.. 개인적으로 필자는 레이아웃 방식을 선호하는데, 왜냐면 태그 열고 닫기 하나 재대로 못하는 퍼블 개발자들이 미친듯이 많아서;; header 와 footer 로 나눠서 따로 호출 하고 싶다면.. 즉, 그누보드4처럼 구조를 잡아달라면 잡아주고도 합니다. )

 

공개한것은 기본적인 테마 적용법과 Rest API 그리고 로그인 샘플 코드입니다.

( 솔직히 이거만 있으면 나머지는 다 응용이니 필요없지 않나 생각을;; )

 

전번에 이야기한거 처럼 CMS 비슷하게 만들어 보려고 했으나..

 

워차피 요즘은 요청사항에 맞춰 개발하는것이 필수화 되어있고, CMS 는 클라이언트의 요구로 지향하는 추세기 때문에..

 

그냥 매번 귀찮게 해야하는 부분만 공개하였습니다.

( 원하신다면 Database/Migrations 와 Database/Seeds 쪽 샘플도 만들어서 공개해드릴 수 있;; 과거 면접본곳에서 이거 사용할줄 알면 CI3 다 아는거라고 유세떨던 회사도 있었지.. ( 먼산.. ) 뭐, 보는게 재미있었으니, 그냥 아~ 몰라양~ 하면서 지켜봤지만,, 참고로 잘쓰면 정말 좋은데, 실수 한번하면 끝장납니다 ㅋㅋㅋ )

 

물론 manana.kr 쪽 소스코드랑은 다른 부분들이 좀 있습니다.

( 애초에 manana.kr 은 사이트별로 다 소스코드 달라서;; )

 

Rest API 의 경우는 현재 제가 서비스중인 api.manana.kr 의 소스코드를 좀 라이트(?)하게 변경하여서 공개하였습니다.

( json 과 xml 만 적용되어있는데, 응용을 좀 하시면 api.manana.kr 처럼 가능하십니다. )

 

CI4 로 Rest API 를 만드시는 분은 참고하시거나, 가져다 쓰시면 바로 제작이 가능합니다.

 

회원쪽 모델을 공개하였기 때문에, CI4 rc3 에서 공개된 encrypter 의 샘플도 함께 들어가 있습니다.

( 현재 소속되어있는 회사 사이트 제작할때가 rc2였나? rc1 이었는데, 그때는 암호화 라이브러리가 없어서, 직접 만든걸 썼었;; )

 

소스코드에서 보이는것과 같이 저는 Entity 를 사용해서 DB의 값을 가져오지만, CI의 특징상 사용안하셔도 무방합니다.

 

CI3 처럼 사용해도 전~혀 문제가 없습니다.

( 자유분방한게 CI 의 특징이니.. )

 

어디까지나 CI4 초창기부터 사용하면서 온갖 삽질과 소스코드 변경을 하면서 지금에 이른 사람의 참고용 코드라고 생각해주시면 될거 같습니다.

( manana.kr 소스코드가 공개된것이 알파1부터였으니.. 그때는 app 이 아니라 application 폴더였고,, 없는게 많았;; )

 

참고로 크몽에서 저에게 의뢰를 할 경우 깃허브에 공개된것을 기반으로 제작에 들어갑니다.

( 공개용이라;; )

 

궁금하신게 있으시면 가능한 범위 내에서 소스코드를 보여드리거나, 깃허브에 정리해서 공유해드리도록 하겠습니다.

 

 

예를들면, 로그인 처리의 경우 본인의 경우 세션에 집어넣은후에, BaseController.php 에서 위와 같이 Services 에 등록하여 사용합니다.

 

 

그리고 이것은 app/Config/Services.php 에서의 account 처리 코드입니다.

 

위와 같이 하면 어느 파트에서도 쉽게 현재 로그인중인 account 의 정보를 가져 올 수 있습니다.

 

\Config\Services::account();

 

하지만 매번 위의 코드를 사용해서 불러와야 하기 때문에 불편합니다.

( 정확히는 service('account'); 함수로 불러오면 되기는 하는데.. 이러면 오토힌팅을 위한 주석을 추가해야;; )

 

 

그래서 저는 account 헬퍼를 만들어서 사용합니다.

 

account()->id;

 

그러면 위와 같이 편하게 사용이 가능합니다.

( CI4 를 뜯어보시면 대부분의 라이브러리들이 저런 느낌으로 호출을 합니다. )

 

그래서 Entity 쪽 뜯어보면, 기존 CI3에서 헬퍼나 모델에서 많이들 넣던 기능들을 넣어서 사용하게 됩니다.

 

공개한것은 로그인 체크를 위한 비밀번호 확인 루틴인데, 저는 해당 계정의 프로필 이미지 가져온다거나 하는것도 다 Entity 쪽에 작성해서 사용중입니다.

 

그리고 CI4 에서는 오토로드 기능이 있어서, 꼭 composer.json 으로 인스톨 해서 autoload.php 를 안만들어도 오토로드를 app/Config/Autoload.php 에서 설정하면 오토로드가 자동으로 가능하게 됩니다.

 

 

twitter.manana.kr 의 소스인데, 저렇게 autoload 등록을 하면, require 문을 따로 쓰지 않아도 lib 등에서 편하게 사용이 가능합니다.

 

ps. Rest API 만들기 쉽다고 라라벨 쓰는 분들이 많은데..

실제로 과거 있었던 회사도 그렇고..

 

개인적으로는 CI4 를 추천합니다.

제가 공개한 샘플 보시면 알겠지만, CI4로 Rest API 만들기 쉽습니다.

( 저는 API에 1분 페이징 캐싱 적용해서 DB 부하를 최소화 하고 있습니다. API 통계가 부하가 쩔지만.. 1초 평균 200콜까지 봐본.. 사이트 전반적으로는 부분 캐싱 떡칠 되어있지만;; DB 캐싱은 아직 미적용.. )

최소한 CI2 ~ CI3 를 사용하시던분은 라라벨보다 빠르게 익힐 수 있어서 좋습니다.

( 여차하면 CI2 ~ CI3 처럼 개발해도 돌아는 갑니다. 몇가지 변경된 수칙만 유의하시면.. namespace 라던가??? )

 

그보다 나는 제로보드XE가 뜬금없이 라라벨 쓴다고 할때 한번 문서 훑은게 전분데..

그러니까 몇년전..

라라벨 문서 보고서 열심히 API 만드는 사람이 몰라서 나한테 묻더라;;

난 라라벨 전문이 아니라 CI 로 들어온 사람인데;;

는, 소스코드 한번 훑고서 알려주기는 했는데;;

( 라라벨도 일정 룰만 터득하면 쉬워서;; 문젠 그 룰이지;; )

 

ps2. 페이징 캐싱때는 주의해야하는 부분이 몇가지 있기 때문에, 페이징 캐싱때는 조심하셔야합니다.

그보다 DB 캐싱이 있는거 같기는 한데, 아직까지 사용법은 잘 모르겠네요.

문서에는 DB Query 캐싱 폴더 지정하라고 되어있던데..

 

ps3. 인터넷에 보면 CI4로 완성된 사이트도 없고, 아직 불안정해서 사이트 제작에는 비추천이라는데..

알파버전 이전부터 CI4 잘만 쓰던 사람으로서 말하면..

현 시점에서는 거의 모든 기능이 완성되어있고, 곧 정식 런칭이기 때문에, 슬슬 한번 써보시는것도 좋을거라 생각합니다.

 

단, 소소한 버그들은 많이 있습니다.

( 근데, 필자처럼 소스코드 하나 하나 뜯어보면서 하드코어하게 쓰는 사람 아니면 모를 버그들;; )

 

ps4. CI4 기본 모델에서 제공해주는 함수중에, find 라는 함수가 있는데..

변수 지정을 안하면, row 가 아니라, array list 리턴을 합니다.

 

그리고 인서트 혹은 업데이트시에 ->insert();, ->update(); 로 함수에 변수 지정이 가능한데..

이곳에 변수를 지정해버리면, 이전에 지정한 ->set() 이나 ->where() 에서 지정한 데이터를 무시하게 됩니다.

( 이 사실 잘 모르고 섞어쓰면 헬게이트가 열리는.. )

Posted by Pure Ani

RE:D Cherish! -Eternity Blood- CRYSTALiA

放課後シンデレラ2 HOOKSOFT

花鐘カナデ*グラム NanaWind

フタマタ恋愛 ASa Project

スタディ§ステディ2 ま~まれぇど

リンパにATATA! ~メス牡蠣ミルクどぴゅらっしゅ~ Hending

創作彼女の恋愛公式 Aino+Links

流星ワールドアクター Heliodor

Secret Agent~騎士学園の忍びなるもの~ ensemble

天冥のコンキスタ エウシュリー

HaremKingdom -ハーレムキングダム- SMEE

ラズベリーキューブ まどそふと

ノラと皇女と野良猫ハート2 -Nora, Princess, and Crying Cat.- HARUKAZE

『ノラと皇女と野良猫ハート2』応援中♪

ピュアソングガーデン PULLTOP

はにデビ! Honey&Devil eufonie

姫繰三六五 HIMEKURI365

姫繰三六五 公式ウェブサイト

はるるみなもに! クロシェット

死に逝く君、館に芽吹く憎悪 バグシステム

Sanguinea-サングイネア- すにぃる

麗華の館 しすたーそふと

カスタムメイドオンライン KISS