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
,
배대웅 2019.11.30 16:30

자료 공개 고맙습니다. 혹시 간단한 ci4 코드 공개하는 사이트 아시면 알려주세요. 한국 사이트엔 없는거같네요. 비전공자로서 코드 보면서 배워 보려고하니 쉽지 않네요. 미리 감사드려요.

Pure Ani 2019.11.30 18:04 신고

제가 깃허브에 공개한 소스코드를 참고하셔서, 하나 하나 수정 및 개발해보셔야 할겁니다.

기존의 CI2 혹은 CI3 를 하셨다면, 그 방식대로 개발하셔도 별다른 문제는 없습니다.

아직 CI4로 공개되어있는곳은 없는걸로 알고있습니다.

간단한 공개 개발용 서비스를 만들어 볼까도 생각해봤었는데, 아직 그건 구상만 하고 있어서 어떻게 될지 모르겠네요.

개발하다가 궁금한게 있으시면 질문글 남겨주시면, 답변해드리겠습니다.

김웅 2020.04.09 00:08

안녕하세요 CI4공부하다가 보게되어 활용해서 만들고 있는 초짜 개발자입니다 ㅠ
만들어주신 코드에서 혹시 header 나 side 메뉴를 구성하게된다면 그런 것들은 어떤식으로 불러와야할까요?
샘플 코드에서는 form 만 가져오게끔 되어있어서... 어떤 방법이 있을지 궁금합니다.

Pure Ani 2020.04.26 14:21 신고

레이아웃에서 구성하시면 될거 같습니다.

김웅 2020.05.19 22:16

말씀해주셨는데...ㅠ 몇일째 삽질중입니다... 혹시 만약에 header 파일과 실제 불리는 파일 예를 들어 ~~~.com/main 이라고 한다면 main 페이지 view 그리고 footer 파일 순서대로 읽히게 하고 싶은데... 혹시 예제 샘플 하나만 좀 받아볼 수 있을까요?

Pure Ani 2020.05.21 12:33 신고

https://github.com/yks118/Manana-CMS-for-Codeigniter/blob/master/app/Views/basic/layout/default.php

저쪽이 레이아웃 파일입니다.

https://github.com/yks118/Manana-CMS-for-Codeigniter/blob/master/app/Views/html.php

그리고 이쪽이 CSS, javascript 등의 메타태그를 지정하는 파일입니다.

순서로는..
Main Controller ( Main Model? )
↓ ( $this->_view() 호출 )
Main View

Theme Layout

HTML TAG File
순서로 읽습니다.

Pure Ani 2020.06.09 23:20 신고

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

확인해보세요.

恋愛×ロワイアル ASa Project

放課後シンデレラ HOOKSOFT

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

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

火箭 ゆるすまぢ! そしらぬ笑顔と汚れた下着 Hending

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

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

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

白恋サクラ*グラム NanaWind

調子に乗ってるレイヤーでオタサーの姫を教師の俺が騙してハメ撮りしてみた ぱちぱちそふと黒

幕末 尽忠報国烈士伝 MIBURO インレ

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

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

ピュアソングガーデン PULLTOP

はにデビ! Honey&Devil eufonie

姫繰三六五 HIMEKURI365

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

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

ハナヒメ*アブソリュート! mirai

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

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

麗華の館 しすたーそふと

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