> 백엔드 개발 > PHP 튜토리얼 > PHP 프레임워크 Yaf 경로 rewriting_php 예제 자세한 설명

PHP 프레임워크 Yaf 경로 rewriting_php 예제 자세한 설명

墨辰丷
풀어 주다: 2023-03-27 08:50:01
원래의
1489명이 탐색했습니다.

이 글은 주로 PHP 프레임워크 Yaf 라우팅 rewriting_php에 대한 자세한 예제를 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

일반적으로 사이트 URL은 친숙한 URL 형식으로 다시 작성됩니다. 웹서버(Nginx) 구성에서 다시 작성하거나 터미널에서 수행할 수 있습니다.

다음은 Yaf 프레임워크를 사용하여 URL을 다시 작성하는 것입니다. 그리고 나중에 보기 쉽게 정리

YAF의 URL 재작성 방법은 주로 다음과 같으며 포괄적으로 사용할 수 있습니다

방법 1: 구성 파일에서

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

;a rewrite route match request /product/*/*

routes.route_name.type="rewrite"

routes.route_name.match="/product/:name/:value"

routes.route_name.route.controller=product

routes.route_name.route.action=info

 

;a regex route match request /list/*/*

routes.route_name1.type="regex"

routes.route_name1.match="#^list/([^/]*)/([^/]*)#"

routes.route_name1.route.controller=Index

routes.route_name1.route.action=action

routes.route_name1.map.1=name

routes.route_name1.map.2=value

 

;a simple route match /**?c=controller&a=action&m=module

routes.route_name2.type="simple"

routes.route_name2.controller=c

routes.route_name2.module=m

routes.route_name2.action=a

 

;a simple router match /**?r=PATH_INFO

routes.route_name3.type="supervar"

routes.route_name3.varname=r

 

;a map route match any request to controller

routes.route_name4.type="map"

routes.route_name4.controllerPrefer=TRUE

routes.route_namer.delimiter="#!"

로그인 후 복사

다음에 초기화 기능을 추가하세요 Bootstrap.php, 함수 이름은 필요에 따라 선택할 수 있습니다. 호출하려면 _로 시작해야 합니다

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

<?php

class Bootstrap extends Yaf_Bootstrap_Abstract{

  public function _initConfig() {

    $config = Yaf_Application::app()->getConfig();

    Yaf_Registry::set("config", $config);

  }

 

  public function _initRoute(Yaf_Dispatcher $dispatcher) {

    $router = $dispatcher->getRouter();

    /**

     * we can add some pre-defined routes in application.ini

     */

    $router->addConfig(Yaf_Registry::get("config")->routes);

    /**

     * add a Rewrite route, then for a request uri:

     * http://***/product/list/22/foo

     * will be matched by this route, and result:

     *

     * [module] =>

     * [controller] => product

     * [action] => info

     * [method] => GET

     * [params:protected] => Array

     *   (

     *     [id] => 22

     *     [name] => foo

     *   )

     *

     */

    $route = new Yaf_Route_Rewrite(

      "/product/list/:id/:name",

      array(

        "controller" => "product",

        "action"   => "info",

      )

    );

     

    $router->addRoute(&#39;dummy&#39;, $route);

  }

?>

로그인 후 복사

방법 2: 배열 모드에서 프로그램에서 직접 구성

다음 함수가 배치됩니다. Bootstrap.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

public function _initRoute(Ap_Dispatcher $dispatcher) {

  //在这里注册自己的路由协议,默认使用static路由

  $router = Ap_Dispatcher::getInstance()->getRouter();

  $routeConfig = array(

  $router = Ap_Dispatcher::getInstance()->getRouter();

  $routeConfig = array(

    "item" => array(

      "type" => "regex",

      "match" => "#^/(software|game)/(.*).html$#",

      "route" => array(&#39;action&#39; => &#39;item&#39;),

      "map" => array( 1 => &#39;data_type&#39;, 2 => &#39;docid&#39; ),

    ),

    //正则匹配

    "category" => array(

      "type" => "regex",

      "match" => "#^/(software|game|video)/(.*)/(list_(.*).html)?$#",

      "route" => array(&#39;action&#39; => &#39;list&#39; ),

      "map" => array( 1 => &#39;data_type&#39;, 2 => &#39;cid&#39;,4 => &#39;page_num&#39; ),

    ),

    //使用动态结果 :a 表示action

    "name" => array(

      "type" => "rewrite",    //Yaf_Route_Rewrite route

      "match" => "/user-list/:a/:id", //match only /user-list/开头的

      "route" => array(

        &#39;controller&#39; => "user", //route to user controller,

        &#39;action&#39;   => ":a", //使用动态的action

      ),

    ),

  );

  $router->addConfig(new Ap_Config_Simple($routeConfig));

}

로그인 후 복사

방법 3:

1

2

3

4

5

6

7

8

9

10

11

/**

* Add a rewrite route to Yaf_Router route stack

*/

Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",

  new Yaf_Route_rewrite(

    "/product/:name/:id/*", //match request uri leading "/product"

    array(

      &#39;controller&#39; => "product", //route to product controller,

    ),

  )

);

로그인 후 복사

관련 권장 사항:

PHP7.1에서 설치 yaf확장 단계 자세한 설명

Yaf 프레임워크 설치 가이드

PHP7.1 설치 yaf확장 방법

위 내용은 PHP 프레임워크 Yaf 경로 rewriting_php 예제 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿