ThinkPHP--模块化和 URL 模式

本文介绍ThinkPHP框架中的模块化设计与URL模式配置,包括如何设置默认模块、允许和禁止访问的模块,以及四种URL请求模式的具体实现。

  学习要点:

  1.模块化设计

  2.URL 模式

===================================================================================

  一.模块化设计

  在上一节,我们直接复制 index.php 创建了 admin.php 文件。这样会自动生成两个目录,分别为 Weibo 和 Admin,前者代表前台,后者代表后台。那么现在采用 ThinkPHP 模块化架构思想,可以把 Weibo 内的 Home 目录当作前台、Weibo/Admin 目录当作后台。

  操作方法:把 Home 目录复制一份到同级目录,改名为 Admin。把 Admin 中的 Controller内的 IndexController.class.php 的命名空间改为如下:

  //修改Admin模块的命名空间

  namespace Admin\Controller;

  最终访问的地址就是:http://localhost/demo/index.php/Admin

  有一些模块我们希望是被用户禁止访问的,比如 Common 和 Runtime 模块。当然,框架已经在默认就禁止访问了。

  当强行访问 Common 模块的时候,会提示:“无法加载模块:Common”的错误信息。

  //禁止访问模块

  'MODULE_DENY_LIST' => array('Common','Runtime'),

  PS:当你去掉数组里的'Common',那么会提示:“无法加载控制器:Index”的错误信息。说明这个模块已经可以访问了。

  //禁止访问模块,添加一个Admin模块

  'MODULE_DENY_LIST' => array('Common','Runtime','Admin'),

  有禁止访问模块的设置,就有允许访问模块的设置。当设置了此选项,就务必把所有允许访问的模块都添加上,否则会变成拒绝访问。

  //允许访问的模块,设置了,就必须写全,漏写的将无法访问

  'MODULE_ALLOW_LIST' => array('Home','Admin'),

  如果有多个访问模块,那么在默认 URL 访问的时候,应该有一个首选访问。默认是 Home,想设置 Admin 为默认,可以这么设置:

  //设置默认起始模块

  'DEFAULT_MODULE' => 'Admin',

  应用项目如果只允许单个模块的话,可以设置拒绝多个模块,这样创建更多的模块将失效。

  //单模块设置

  'MULTI_MODULE' => false, 有时,你会觉得 index.php/Admin 这样很麻烦。你可能想直接 admin.php 就代表后台就方便很多,那么可以使用多入口设置。

  这里的多入口和上一节多个应用项目不同,而是通过 admin.php 访问 Weibo 目录下的

  Admin 模块。将 index.php 复制出来改成 admin.php,然后添加如下代码:

  //默认指向Admin模块

  $_GET['m'] = 'Admin';

  //默认指向Index控制器

  $_GET['c'] = 'Index';

 

  二:URL请求模式

  ThinkPHP的URL模式有四种,默认是PATHINFO模式,其他三种分别为:普通模式、 REWRITE和兼容模式。

  http://localhost/demo/index.php/模块/控制器/操作

  //用户密码传参

  class UserController extends Controller

  {

    public function test($user, $pass)

    {

    echo 'user:'.$user.'pass:'.$pass;

    }

  }

  //PATHINFO模式

  http://localhost/demo/index.php/Home/User/test/user/Lee/pass/123

  在这条 URL 上,Home 表示模块,User 表示控制器,test 表示方法,user/Lee 表示第一个键值对,pass/123 表示第二个键值对。

  PATHINFO 模式下默认的分隔符是/,我们可以设置为你想要的,比如:_

  //设置键值对分隔符 'URL_PATHINFO_DEPR'=>'_',

  设置了分隔符的 URL:

  http://localhost/demo/index.php/Home_User_test_user_Lee_pass_123

   //普通模式

  http://localhost/demo/index.php?m=Home&c=User&a=test&user=Lee&pass =123

  在这条 URL 上,我们发现采用的就是传统的 GET 模式,m 表示模块,c 表示控制器,a 表示方法,后面的表示键值对。普通模式的 m、c、a 可以自行设置为你习惯的键名称:

  //修改键名称

  'VAR_MODULE' => 'mm',

  'VAR_CONTROLLER' => 'cc',

  'VAR_ACTION' => 'aa',

  http://localhost/demo/index.php?mm=Home&cc=User&aa=test&user=Lee&pass=123

  //REWRITE模式(重写模式)

  httpd.conf 配置文件中加载了 mod_rewrite.so 模块

  AllowOverride None 将 None 改为 All

  把下面的内容保存为.htaccess 文件放到应用入口文件的同级目录下

  这样,ThinkPHP 自带的.htaccess 文件就起作用了,可以过滤掉 index.php 这个字符串。

  // 去除了index.php

  http://localhost/demo/Home/User/test/user/Lee/pass/123

  总结:

  1.普通模式
  http://localhost/demo/index.php?m=Home&c=Index&a=index
  2.PATHINFO模式
  http://localhost/demo/index.php/Home/Index/index
  3.rewrite模式
  http://localhost/demo/Home/User/index
  4.兼容模式
  http://localhost/demo/index.php?s=Home/Index/index

转载于:https://www.cnblogs.com/fujunjie/p/9334323.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值