ThinkPHP学习-2:模块化设计

 

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接口

1

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

2. 修改模块访问权限

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

2.1禁止访问:MODULE_DENY_LIST

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

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

ThinkPHP学习-2:模块化设计_第1张图片

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

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

ThinkPHP学习-2:模块化设计_第2张图片

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

ThinkPHP学习-2:模块化设计_第3张图片

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

访问结果如下:

5

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:模块化设计)