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

说明: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

时间: 2024-10-12 03:55:51

ThinkPHP学习-2:模块化设计的相关文章

thinkphp学习笔记5—模块化设计

1.模块结构 完整的ThinkPHP用用围绕模块/控制器/操作设计,并支持多个入口文件盒多级控制.ThinkPHP默认PATHINFO模式,如下: http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...] 应用:由同一个入口文件访问的项目称为一个应用,在完整版的代码中就是Application 模块:一个应用下面可以包含多个模块,每个模块对应独立的目录,在完整版的代码中有Admin,Home,Common,Runtime四个模块

ThinkPHP学习笔记(五)模块化设计

1.模块化设计 一个完整的ThinkPHP应用基于模块/控制器/操作设计,并且,如果有需要的话,可以支持多入口文件和多级控制器. 一个典型的URL访问规则是(我们以默认的PATHINFO模式为例说明,当然也可以支持普通的URL模式):    http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...] ThinkPHP3.2的应用可以支持切换到命令行访问,如果切换到命令行模式下面的访问规则是:    >php.exe index.p

thinkphp 模块化设计

一个完整的ThinkPHP应用基于模块/控制器/操作设计,并且,如果有需要的话,可以支持多入口文件和多级控制器. ThinkPHP3.2采用模块化的架构设计思想,对目录结构规范做了调整,可以支持多模块应用的创建,让应用的扩展更加方便. 一个典型的URL访问规则是(我们以默认的PATHINFO模式为例说明,当然也可以支持普通的URL模式): http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...] ThinkPHP3.2的应用可以

AngularJs学习笔记7——四大特性之模块化设计

模块化设计 1.引用自定义模块并调用 自定义模块中,如果有一些服务.封装好笑模块,在另外一个模块中(声明的时候,在依赖列表中加入要引入的模块) var app02 = angular.module('fan02',['ng','fan']); 就调用fan02模块中所定义的东西 2.ng内置的模块的用法 (1) ngRoute模块(路由模块) AngularJS是一个开源的js框架.用在数据操作比较频繁的场景下,用于SPA应用 单页面应用的工作原理: 1.页面url:http://127.0.0

thinkphp学习笔记10—看不懂的路由规则

路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INFO,PATH_INFO是什么呢?手册中提到“要使用路由功能,前提是你的URL支持PATH_INFO(或者兼容URL模式也可以,采用普通URL模式的情况下不支持路由功能),” , url支持path_info,不是apache要支持path_info么,度娘讲的还算清楚一点,见下文: pathinfo(PHP 4 >= 4.0.3, PHP 5)path

thinkphp学习笔记7—多层MVC

原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层等不同的模型层可以在模块目录下创建Model,Logic,Service目录,把对用户表的所有模型操作分成3层. 1.Model/UserModel用于定义数据相关的自动验证,自动完成和数据存取接口 2.Logic/UserLogical用于定义用户相关的业务逻辑 3.Service/UserSer

产品经理到底要不要懂技术?(要拥有的是框架思维:产品分层与模块化设计,使用路径设计,良好的商业思维设计。人生时间有限,不需要将编程技术吃透)

前段时间,我面试了一个国内一线门户客户端的产品经理,她是学计算机出身的PM,但是由于编程能力比较弱,所以做了产品经理.后来在工作中,有时和技术同学打交道比较费劲,所以自己吭哧吭哧开始学习SQL和PHP. 我不太认可这种直接去学习编程的方式,因为产品经理应该是很忙的,你的宝贵时间不该花在学习编程这件小事上.(多说一句,我也是学计算机出身,毕业于国内某最好的大学之一的计算机系.我并无贬低编程之意,恰好相反,我身边很多优秀的产品经理都是学计算机专业出身.) 所以,结合自己的工作和创业经历,以及后来与诸

模块化设计

尽管写过很多模块,但一直对于模块化设计,没有一直很清晰的认识,这次学习了软件设计之道,终于从概念上对模块化设计有了一个更清晰的认识. 一个软件本质上是完成一个或多个特定的功能,所以,写程序的第一目标是实现需求.既然是实现需求,那是不是随便怎么写,只要完成功能就行呢? 不是的,因为,软件是生命周期的,在一个软件的生命周期里,需求会不断变化(增加或减少),同时要求,软件开发人员,能够快速应对这些个需求变化, 由此可见,软件不是一次写完就永远不改了,而是需要不断修改以新增功能.这个也叫软件的可扩展性,

thinkphp学习笔记9—自动加载

1.命名空间自动加载 在3.2版本中不需要手动加载类库文件,可以很方便的完成自动加载. 系统可以根据类的命名空间自动定位到类库文件,例如定义了一个类Org\Util\Auth类: namespace Org\Util; class Auth { } 保存到ThinkPHP/Library/Org/Util/Auth.class.php 这样我们就可以直接实例化了, new \Org\Util\Auth(); 实例化之后系统会自动加载 ThinkPHP/Library/Org/Util/Auth.

thinkphp学习笔记1—目录结构和命名规则

最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快点,别无他意,所谓活到老,学到老,希望各位不要见笑啊. 我的做法很简单,先从手册开始,手册是开发thinkphp作者辛勤劳动的成果,但是有些地方是在是不懂,如果有幸各位也遇到类似的问题希望能回复.thinkphp手册地址:http://doc.thinkphp.cn/manual.html 1.框架目录 在章节1.6 目录结构,内容如下: 新版的目录结