앞서 얘기한 적이 있는데 ci4를 브라우저에 접속하면 라우트에서 컨트롤러로 컨트롤러가 뷰를 지정해주면 그 파일을 화면에 보여주게 된다.
이 그림이다. 이제 이걸 소스로 확인해보자.
브라우저에 입력한 주소를 다시한번 보자.
http://localhost:8080/
이렇게 브라우저 주소창에 입력하면 기존의 php라면 무조건 index.php파일을 읽어오게 된다. 그것이 약속이다. 그래서 index.php 파일의 내용을 보여주게 된다.
그럼 ci4는 어떨까. 아까 우리가 봤던 웰컴 화면은 어떤 파일을 본 것일까? ci4도 index.php 일까? 확인해보자.
VScode에서 소스를 찾아보자.
/app/Config/Routes.php
파일을 열어보자. ci4는 사용자가 브라우저에 주소를 입력하면 제일 먼저 이 파일을 열어서 해당 주소가 있는지 확인한다. 그렇다. 이게 라우트다.
소스를 조금 내려보면
$routes->get('/', 'Home::index');
이런 부분이 나온다. 우리가 입력한 주소 http://localhost:8080/ 는 마지막에 /로 끝났다. 라우트에도 이 부분이 정의돼 있다. 소스를 보면 / 이 값이 들어오면 'Home::index'로 가라고 지정돼 있다. 거기로 가보자.
그런데 Home은 어디로 가라는 걸까? 아까 얘기했듯이 컨트롤러로 가라는 거다. 컨트롤러에서 Home이라는 이름의 컨트롤러로 가라는 거다. 확인해보자.
컨트롤러는
/app/Controllers/Home.php
에 있다.
참으로 지랄맞지 않은가? 뭐가 이렇게 복잡한지. 하지만 지켜야한다. 그것이 규칙이므로.
자 다시 소스를 보자. 뭔가 무시무시하다. 생전 처음보는 글자들이 보인다. namespace가 뭐지? class라고? extends는 또 뭐지?...
무서워하지마라. 그런거 몰라도 된다. 우리가 알아야하는 건 그 아래에 있다. 늘 중요한건 아래에 있다.
public function index()
{
return view('welcome_message');
}
좀전에 위에서 라우트를 확인할때 본 것이 있다. $routes->get('/', 'Home::index'); 요거다. 여기에 뭐라고 써져있나 하면 Home 다음에 오는게 index라고 써져있다. 이 index가 바로 Home.php 안에 들어 있는 함수 index()다.
한번더 생각해봐도 참 지랄맞게 만들었다. 하지만 이게 대세고 또 자꾸 하다보면 이게 편한 것도 있다.
index() 함수를 살펴보자.
return view('welcome_message');
흠 뭔가 값을 리턴해준다는게 그게 view함수를 호출해서 파라미터 'welcome_message'를 던져줬다. 이게 무슨 말이냐 하면 위에서 설명한 뷰를 호출하는 것다. 소스를 찾아보자.
/app/Views/welcome_message.php
드디어 찾았다. 우리가 브라우저 창에 입력한 http://localhost:8080/ 이 주소는 결국 welcome_message.php 라는 파일을 열었던 것이다. 참으로 복잡하고 심오하게 만들어졌다. 어떻게 동작하는지 따위는 모르겠지만 뭔가 대단한것 같긴하다.
지금 안해본것은 디비를 연결해서 데이터를 가져오는 '모델(Model)'은 해보지 않았다. 그 부분은 차차 알아보자.
여기까지의 개념을 아는 것이 중요하다. 여기까지 개념이 이해가 안된다면 ci4를 배우긴 어렵다. 자꾸 읽어보면서 ci4가 어떻게 돌아가는지 이해해보도록 하자.
이제 게시판을 만들어볼건데 다 이런식이다. 접속 주소를 라우트에 입력해주고 거기서 컨트롤러를 컨트롤러에선 모델과 뷰를 뷰에서는 컨트롤러에서 받은 값을 뿌려준다.
그럼 다음에 또~
'PHP강좌 > [CI4]게시판만들기강좌' 카테고리의 다른 글
[PHP+CI4+mysql]게시판 만들기 강좌 #6. 파일 준비(include, layout.php) 2편 (0) | 2022.10.26 |
---|---|
[PHP+CI4+mysql]게시판 만들기 강좌 #5. 몇가지 설정(디비,오류표시,index.php) (0) | 2022.10.26 |
[PHP+CI4+mysql]게시판 만들기 강좌 #4. 파일 준비 1편 (0) | 2022.10.25 |
[PHP+CI4+mysql]게시판 만들기 강좌 #2. 준비(설치, 컴포저 안쓰고 다운로드 받아 설치) (0) | 2022.10.21 |
[PHP+CI4+mysql]게시판 만들기 강좌 #1. 준비(개념) (0) | 2022.10.21 |