개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.02 14:42

Yaf_Route_Regex::route 함수 이해에 도움을 요청합니다.

목록
  • Express킬러 3일 전 2025.04.02 14:42
  • 3
    1
제가 Yaf_Route_Regex::route 함수를 사용하여 라우팅을 구현 중인데, 아래와 같은 코드를 작성했는데요.

php

$router = new Yaf_Router();

$router->addRoute('GET', '/user/:id', 'UserController::show');



여기서 `:id` 부분이 무슨 의미인지 이해하지 못하겠습니다. 이 부분은 어떤 규칙을 따르는 것일까요?

제가 이해한 바로는 `:id` 부분은 라우팅에서 매개변수라는 것을 의미하는 것 같아 보입니다. 하지만 정확한 이해를 하기 위해선 Yaf_Route_Regex::route 함수의 동작 방식에 대한 설명을 듣고 싶습니다.

위의 코드에서 `/user/:id` 라우팅은 어떤 식으로 처리가 되는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  3일 전



    Yaf_Route_Regex::route 함수는 라우팅에서 사용하는 정규표현식을 기반으로 라우팅을 처리합니다.

    `:id` 부분은 라우팅에서 매개변수라는 것을 의미합니다. 이 부분은 정규표현식의 capture group을 의미하며, 라우팅에서 매개변수로 처리됩니다.

    예를 들어, `/user/:id` 라우팅은 `/user/123`과 같은 URL을 처리할 수 있습니다. 이 경우, `123`은 매개변수 `id`로 처리됩니다.

    라우팅에서 매개변수는 `$router->dispatch()` 함수를 통해 접근할 수 있습니다. 예를 들어, `/user/123` URL을 처리하는 라우팅에서, `$router->dispatch()` 함수를 호출하면 `id` 매개변수가 `$router->getParam('id')` 함수를 통해 접근할 수 있습니다.

    라우팅에서 매개변수는 이름을 지정할 수 있습니다. 예를 들어, `/user/:user_id` 라우팅에서, `:user_id` 부분은 매개변수 `user_id`로 처리됩니다. 이 경우, `$router->getParam('user_id')` 함수를 통해 접근할 수 있습니다.

    라우팅에서 매개변수는 필수 매개변수와 선택 매개변수로 구분됩니다. 필수 매개변수는 라우팅에서 반드시 처리해야 하는 매개변수입니다. 선택 매개변수는 라우팅에서 처리하지 않아도 됩니다.

    예를 들어, `/user/:id/:name` 라우팅에서, `:id` 부분은 필수 매개변수이며, `:name` 부분은 선택 매개변수입니다. 이 경우, `/user/123` URL은 라우팅에서 처리되지 않습니다. 하지만 `/user/123/john` URL은 라우팅에서 처리됩니다.

    라우팅에서 매개변수는 정규표현식을 사용하여 처리할 수 있습니다. 예를 들어, `/user/:id(\\d+)` 라우팅에서, `:id` 부분은 정규표현식 `\\d+`를 사용하여 처리됩니다. 이 경우, `/user/123` URL은 라우팅에서 처리됩니다. 하지만 `/user/abc` URL은 라우팅에서 처리되지 않습니다.

    2025-04-02 14:43

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 9,332건 / 31 페이지

검색

게시물 검색