189 8069 5689

php把路由放在数据,php把路由放在数据中心

thinkphp 怎样动态配置路由,怎样从数据库调取数据来配置路由

用这个方法: Route::get('detail-name-id', 'product/detail');

成都创新互联专注于巴彦淖尔企业网站建设,响应式网站,商城网站建设。巴彦淖尔网站建设公司,为巴彦淖尔等地区提供建站服务。全流程定制制作,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务

name和id 后台自己定义内容

例:域名/detail-xxxx-23

xxxx 从数据库调取数据

thinkphp 的全路径路由,U方法怎么设置

Thinkphp的App目录是通过使用__APP__预编译常量定义的,其赋值在于入口文件的与站点根目录的相对目录计算的。在Thinkphp中,APP的入口目录的设置有两种方法:

1、通过Thinkphp自动计算 把入口文件放在自己Application目录下,通过U()函数获取时,Thinkphp会自动在你指定的Controller/Action前面加上Application目录Url前缀。优点自动化,符合Think的设计标准,缺点:缺少灵活。

2、手动设置APP所在目录

在入口文件中定义常量:“__APP__”,指定URL前缀,这样的话,你可以任意设定App前缀如:

如何在PHP中实现URL路由

第一步,首先要在服务器的配置上对/router/路径进行拦截

调用某个文件夹目录下的index.php页面,假定现在所有模块使用单独的文件存放于class目录下,该目录与router平级,如下图所示:

第二步,路由分发器的实现(index.php)

1: !Doctype html

2: html

3: head

4: title路由测试~~/title

5: meta http-equiv="content-type" content="text/html; charset=utf-8" /

6: /head

7: body

8:

9: ?php

10:

11: date_default_timezone_set("Asia/Shanghai");

12:

13: define("MODULE_DIR", "../class/");

14:

15:

16: $_DocumentPath = $_SERVER['DOCUMENT_ROOT'];

17: $_FilePath = __FILE__;

18: $_RequestUri = $_SERVER['REQUEST_URI'];

19:

20: $_AppPath = str_replace($_DocumentPath, '', $_FilePath); //==\router\index.php

21: $_UrlPath = $_RequestUri; //==/router/hello/router/a/b/c/d/abc/index.html?id=3url=http:

22:

23: $_AppPathArr = explode(DIRECTORY_SEPARATOR, $_AppPath);

24:

25: /**

26: * ;url=http:

27: *

28: * /hello/router/a/b/c/d/abc/index.html?id=3url=http:

29: */

30:

31: for ($i = 0; $i count($_AppPathArr); $i++) {

32: $p = $_AppPathArr[$i];

33: if ($p) {

34: $_UrlPath = preg_replace('/^\/'.$p.'\//', '/', $_UrlPath, 1);

35: }

36: }

37:

38: $_UrlPath = preg_replace('/^\//', '', $_UrlPath, 1);

39:

40: $_AppPathArr = explode("/", $_UrlPath);

41: $_AppPathArr_Count = count($_AppPathArr);

42:

43: $arr_url = array(

44: 'controller' = 'index',

45: 'method' = 'index',

46: 'parms' = array()

47: );

48:

49: $arr_url['controller'] = $_AppPathArr[0];

50: $arr_url['method'] = $_AppPathArr[1];

51:

52: if ($_AppPathArr_Count 2 and $_AppPathArr_Count % 2 != 0) {

53: die('参数错误');

54: } else {

55: for ($i = 2; $i $_AppPathArr_Count; $i += 2) {

56: $arr_temp_hash = array(strtolower($_AppPathArr[$i])=$_AppPathArr[$i + 1]);

57: $arr_url['parms'] = array_merge($arr_url['parms'], $arr_temp_hash);

58: }

59: }

60:

61: $module_name = $arr_url['controller'];

62: $module_file = MODULE_DIR.$module_name.'.class.php';

63: $method_name = $arr_url['method'];

64:

65: if (file_exists($module_file)) {

66: include $module_file;

67:

68: $obj_module = new $module_name();

69:

70: if (!method_exists($obj_module, $method_name)) {

71: die("要调用的方法不存在");

72: } else {

73: if (is_callable(array($obj_module, $method_name))) {

74: $obj_module - $method_name($module_name, $arr_url['parms']);

75:

76: $obj_module - printResult();

77: }

78: }

79:

80: } else {

81: die("定义的模块不存在");

82: }

83:

84:

85: ?

86:

87: /body

88: /html

获取请求的uri,然后拿到要加载的模块名、调用方法名,对uri参数进行简单的判断..

第三步,模块的编写

根据上述的uri,我们要调用的是Hello模块下的router方法,那么可以在class目录下定义一个名为Hello.class.php的文件(注意linux下是区分大小写的)

1: ?php

2:

3: class Hello {

4:

5: private $_name;

6: private $_varValue;

7:

8: function __construct() {

9:

10: }

11:

12: function router() {

13: $this-_name = func_get_arg(0);

14: $this-_varValue = func_get_arg(1);

15: }

16:

17: function printResult() {

18: echo $this-_name;

19: echo "p";

20: echo var_dump($this-_varValue);

21: echo "/p";

22: }

23: }

24:

25: ?


名称栏目:php把路由放在数据,php把路由放在数据中心
本文网址:http://cdxtjz.com/article/hsgcjj.html

其他资讯