您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
thinkphp3.2.1学习笔记-模块化和url模式
发布时间:2017-09-19 10:52:08编辑:雪饮阅读()
单应用的模块化:虽然thinkphp3.2.1可以通过复制index.php为admin.php并进行相关配置就可以创建前后端两个应用。但这样会造成文件资源上面的浪费。而想要前后端分离还可以通过模块化来完成。
模块化:访问index.php后进入应用目录复制Home文件夹为Admin文件夹,然后进入Admin文件夹中的控制器目录找到默认的Index控制器将其命名空间的根空间由Home改为Admin。然后后端模块就建立成功了。
访问后端模块如:http://localhost/index.php/Admin/Index/index
禁止访问某模块:
在应用目录下的Common->Conf->config.php中是该应用的配置文件,这里可以配置整个应用的各种配置项。配置禁止某模块禁止访问如:
'MODULE_DENY_LIST'=>array('Admin','Runtime'),
这里是禁止Admin模块访问,如果后面数组中的所有元素都是模块名,该数组中的所有模块都会被禁用。有些模块是默认被禁止的,如这里的runtime模块是系统默认禁止的。
允许访问某模块:
和禁止访问某模块类似。
'MODULE_ALLOW_LIST'=>array('Admin','Runtime'),
设置默认加载模块:
当应用被访问系统默认指定访问模块是home模块,而默认访问模块也可以通过配置项来自行更改。
'DEFAULT_MODULE'=>'Admin',
只允许单个模块访问:
有时候你的应用中希望只能访问一个模块,而其它新增的模块不允许被访问。
'MULTI_MODULE'=>false
给模块添加入口文件:
复制index.php命名为admin.php并在define('APP_DEBUG',True);语句后面添加$_GET['m']='Admin';然后访问如:http://localhost/admin.php就可以直接进入应用中的Admin模块了。添加$_GET['c']='Admin';则指定了默认加载Admin模块中的Admin控制器。
url访问模式:
url访问模式有四种,默认的是pathinfo模式。
下面看一个完整的url访问在pathinfo模式的例子。
复制home模块中的Index控制器为User控制器并建立一个操作(方法):
public function test($user,$pass){
echo "a:".$user."--b:".$pass;
}
若要访问到该方法则url如下:
http://localhost/index.php/Home/User/test/user/xiaoMing/pass/123456
方法的参数名在url中被做为键名,所以这里需要注意,该参数名不能和系统中的参数名冲突,如参数名为$a就是一个错误的参数名。
pathinfo模式下,访问路径或者说是参数的键值对分割符号是"/",我们也可以通过配置项来更改。如下将分割符号改为"_"。
'URL_PATHINFO_DEPR'=>'_',
分割符号从模块名后面才开始,其前面仍旧是网址的默认地址分割符号"/"
修改分割符号后访问实例如:
http://localhost/index.php/Home_User_test_user_xiaoMing_pass_123456
以上便是pathinfo模式。
url访问的普通模式:
http://localhost/index.php?m=Home&c=User&a=test&user=xiaoMing&pass=123456
修改键名称:
thinphp3.2.1中默认的键名:
m:模块
c:控制器
a:方法(操作)
模块、控制器、方法的键名称还是可以自己修改的。
'VAR_MODULE'=>'mm',
'VAR_CONTROLLER'=>'cc',
'VAR_ACTION'=>'aa',
然后普通访问模式访问url如:
http://localhost/index.php?mm=Home&cc=User&aa=test&user=xiaoMing&pass=123456
url的重写模式:
前面两种url访问模式中都带有"index.php",其实在普通模式中index.php可以直接去掉的。如:
http://localhost/?m=Home&c=User&a=test&user=xiaoMing&pass=123456
而pathinfo模式中若你的项目根目录中不存在thinkphp3.2.1所提供的.htaccess文件则不可以的。
.htaccess文件中重写了url访问,允许index.php去掉。
另外url重写模式还要apache的支持,我们需要在httpd.conf中加载mod_rewrite.so模块
AllowOverride None将None改为All
然后重启apache。
如果你的服务器软件不是apache则可参见thinkphp3.2.1完全开发手册中的url重写中的其它服务器软件的相关部署。
兼容模式一般用于不支持pathinfo模式的特殊环境,基本上用不到。
关键字词:thinkphp3.2.1,模块,url