码迷,mamicode.com
首页 > Web开发 > 详细

ThinkPHP学习-2:模块化设计

时间:2015-12-08 18:24:08      阅读:329      评论:0      收藏:0      [点我收藏+]

标签:

 

1. 前台后台统一目录管理

将后台管理界面Admin放入myWeb目录下,实现前台和后台放在同一目录,便于管理和维护。

具体步骤:

1. 将/myWeb/Home目录复制粘贴为/Admin目录;

2. 修改/Admin/Controller/IndexController.class.php文件,将其namespace对应的路径由/Home/Controller修改为/Admin/Controller

3. 这时,就可以通过目录:http://localhost/thinkphp/Index.php/Admin访问后台Admin接口

技术分享

说明:url中index.php对应于Application的根目录。

2. 修改模块访问权限

修改/Common/Conf/Config.php文件。

2.1禁止访问:MODULE_DENY_LIST

//‘配置项‘=>‘配置值‘
    //禁止模块访问
    MODULE_DENY_LIST=>array(Common,Runtime,"Admin")

这样可以控制下面目录访问权限

技术分享

由于Common目录原来就没有Index文件,因此,禁止访问前,访问Common目录效果是这样的。

无法加载控制器,因为找不到Index

技术分享

禁止访问后,访问目录效果是这样的:

技术分享

2.2允许访问:MODULE_ALLOW_LIST

注意,当使用了MODULE_ALLOW_LIST后,不可同时使用MODULE_DENY_LIST。另外,MODULE_ALLOW_LIST使用后,在LIST之外的全部模块均将不可访问。

//允许模块访问,当采用此配置时,在ALLOW_LIST范围外的模块,都不可访问。
    MODULE_ALLOW_LIST => array (Admin),

2.3设置默认访问模块

当系统中有多个模块可以访问时,可以采用DEFAULT_MODULE设置默认访问模块,注意,这里不需要采用Array方式设置。设置完毕后,系统将对应模块设置为默认加载。

//DEFAULT_MODULE为默认访问模块
    DEFAULT_MODULE=>Admin,

2.4为不同模块设置单一入口

把根目录下的index.php复制粘贴为admin.php,并且修改其内容。

//加载Admin模块
$_GET[m]=Admin;

修改完后,可以直接通过以下URL访问http://localhost/thinkphp/admin.php

同样,可以修改配置

2.5 默认加载admin控制器

将IndexController.class.php修改为AdminController.class.php,并对内容进行修改。

class AdminController extends Controller {
    public function index(){
        echo Admin Admin;
    }
}

然后,在根目录的/admin.php中,增加c参数配置

//加载控制器模块
$_GET[c] = Admin;

这样,系统则会加载\Admin\Controller目录下的AdminController.class.php文件,而非IndexController.class.php文件。

3. URL操作模式

TP的URL操作模式包括:

  • PATHINFO模式
  • 普通模式
  • REWRITE模式
  • 兼容模式

3.1PATHINFO模式:

/index.php/模块/控制器/方法名。

例如:在/Home/Controller目录下创建UserController.class.php,其中Controller修改为:

class UserController extends Controller {
    public function index(){
    echo User Index;
    }

访问下面路径,可以访问到默认的index方法: http://localhost/thinkphp/index.php/Home/User

 

其中,方法操作中采用/方法名/参数1名字/参数/参数2名字/参数的方式。

例如:模块名:Home, 控制器:Controller, 方法名:Test,参数1:User, 参数:zhangsan 参数2:password,参数:123

对应代码如下

public function test($user,$password){
        echo $user.$user.<br/>password.$pass;
    }

对应访问连接如下:

http://localhost/thinkphp/index.php/Home/User/test/user/zhangsan/pass/123

访问结果如下:

技术分享

PATHINFO模式默认分隔符为/。如果需要修改分隔符,则在/Common/Conf/config.php中设置参数URL_PATHINFO_DEPR

//分隔符设置
    URL_PATHINFO_DEPR=>_,

http://localhost/thinkphp/index.php/Home_User_test_user_zhangsan_pass_123

3.2普通模式

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

其中m表示模块, c表示用户,a表示方法,后面为参数名和参数

普通模式下,通过VAR_MODULE, VAR_CONTROLLER, VAR_ACTION三种方式,可以自定义键值。

//‘URL_PATHINFO_DEPR‘=>‘_‘,
    VAR_MODULE=>mm, 
    VAR_CONTROLLER=>cc, 
    VAR_ACTION=>aa,

 

3.3重写模式

打开apache的httpd.conf

ThinkPHP学习-2:模块化设计

标签:

原文地址:http://www.cnblogs.com/eachcto/p/5029584.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!