인프런 커뮤니티 질문&답변

언젠가는프리님의 프로필 이미지

작성한 질문수

PHP 7+ 프로그래밍

localhost 접근했을때 최초 페이지가 그려지기까지와 href동작문의

작성

·

539

0

레거시는 이해가 되는데 mvc초입이 이해안되는부분이 많네요

 

최초 url localhost 접근시 localhost/index.php 로 가서

require_once dirname(__DIR__) . '/bootstrap/app.php' 에 의해 해당 내용 읽어오고

 

/bootstrap/app.php에서

lib 폴더(database,function)와 service(유저인증,글정보수정등록,유저정도등록수정기능) 폴더 가져오고

providers(에러,DB,세션,미들웨어,라우트) 읽어오면

라우트에서

$routes = array_merge(require_once dirname(__DIR__, 2) . "/routes/{$route}.php", $routes);

위에서 접근하면 최초에는 $routes가 빈값으로 접근되어서

web.php 의

return [ [ '/', 'get', 'index.index' ], .... ];

내용이 리턴되어 lib/function 의 routes 함수통해

function routes($routes)

controllers 폴더 index.php에 index 함수에 접근하고 index라는 값과 getPosts함수로 글목록을 가져온뒤 view 함수로 /resources/views/layouts/app.php 통해 화면 그리기 이게 맞나요?

 

<a href="/user/register">Register</a>

href가 함수 형태도 아닌데 어떻게 페이지 이동을 시키는것인가요?

답변 1

0

정상우님의 프로필 이미지
정상우
지식공유자

안녕하세요. MVC 를 처음 접하시는 거라면 어려울 수 있습니다. 저도 레거시에서 MVC 를 이해하기까지는 시간이 제법 걸렸기 때문입니다. 자바의 스프링 프레임워크와 같은 곳에서는 일상적으로 쓰이고 있으나 PHP 에서는 레거시에서 나아가야 하기 때문에 더 그럴 것입니다.

순서에 대한 이해는 잘 하신 것으로 생각됩니다. 다시 한 번 살펴보기 위해 이 내용은 그림으로 설명하는 것이 조금 더 명확하므로 그림으로 나타내겠습니다. 사용자가 / 라는 경로로 요청을 했을 때를 그림으로 나타내면 다음과 같습니다.

image

사용자의 요청은 public/index.php 로 모두 모이게되며, 그 다음 부트스트래핑(Bootstrapping) 과정을 거친 이후, routes/web.php, routes/api.php 에 명시된 라우트에서 사용자가 요청한 라우트에 등록된 컨트롤러를 실행합니다. 해당 컨트롤러에서 view 를 반환하는 경우 데이터와 함께 반환할 수 있으며, view 에서는 레이아웃을 포함하고 데이터를 지정합니다.


<a> 에 대한 내용은 HTML 과 관련된 내용이므로 제가 답변드리기 보다는 MDN 을 참고하는 것이 더 좋습니다.