ThinkPHP—URL的访问以及各种方法的操作
1.URL访问
ThinkPHP
采用单一入口模式访问应用,对应用的所有请求都定向到应用的入口文件,系统会从URL
参数中解析当前请求的模块、控制器和操作,下面是一个标准的URL
访问格式:
第一种访问方式
http://localhost:8080/thinkphp/index.php/Home/Index/index 入口文件/模块/控制器/操作
第二种访问方式(传参数)
http://localhost:8080/thinkphp/index.php?m=Home&c=Index&a=index 传三个参数
而且访问时不需要区分大小写,无论URL是否开启大小写转换,模块名都会强制小写。
2.命名空间
相当于一个虚拟的路径
自动加载类
初始命名空间:thinkPHP/Library 虚拟的
根命名空间:由两部分组成:
1.Library下面的所有文件夹都是根命名空间
2.程序目录下模块文件夹
使用某一个类:
use 该类的根命名空间/.../类名
use Think\Controller;
定义命名空间:
namespace 该类的根命名空间/.../它所在的文件夹为止
namespace Home\Controller;
3.空操作和和空控制器处理
空操作:就没有指定的操作方法
“空操作”本质意思:一个对象(控制器)调用本身不存在的方法
空操作有两种解决方案:
① 在对应的控制器里边制作一个方法,名称为”_empty”,这个控制器的空操作都会自动执行该方法。(推荐使用)
//访问方法不存在时调用
public function _empty(){
echo "空操作";
}
② 给空操作的名称制作一个同名的模板出来,系统会自动调用
空控制器:没有指定控制器
空控制器:在实例化控制器对象的时候,没有找到指定的类
空控制器处理方案:可以再制作一个控制器,名称EmptyController.class.php
在该控制器内部其实只需要制作一个_empty()方法即可。
<?php
namespace Home\Controller;
use think\Controller;
class EmptyController extends Controller{
public function _empty(){
echo "控制器不存在";
}
}
4.系统常量信息
//获取系统常量信息方法
public function test(){
var_dump(get_defined_constants(true));
}
如果加参数true,会分组显示,如下图:
//常用的常量信息(获取不同路径) __ROOT__ 获取TP的根路径(/thinkphp) __SELF__ 当前浏览器地址栏中的地址(/thinkphp/index.php/Home/Index/test) __APP__ 入口文件的路径(/thinkphp/index.php) __MODULE__ 当前程序模块的路径(/thinkphp/index.php/Home) __CONTROLLER__ 当前控制器的路径(/thinkphp/index.php/Home/Index) __ACTION__ 当前操作方法的路径(/thinkphp/index.php/Home/Index/test)
5.跨控制器调用
一个控制器在执行的时候,可以实例化另外一个控制,并通过对象访问其指定方法。
跨控制器调用可以节省我们代码的工作量
<?php
namespace Home\Controller;
//继承父类
use Think\Controller;
class IndexController extends Controller {
public function index(){
echo "哈哈哈";
}
public function test(){
//控制器间的调用
$this->index();
//调用标记
$this->mark("hello world");
}
//加标记
public function mark($s){
return "<mark>{$s}</mark>";
}
}
还可以另外创建一个操作类进行跨控制器调用
<?php
namespace Home\Controller;
use Think\Controller;
class LoginController extends Controller {
public function diaoyong(){
//跨控制器调用 造对象
//$index = new \Home\Controller\IndexController(); //造控制器对象(TP中自带的快捷函数)
//$index = A("index"); //调用方法
//$index->mark("你好"); //造完对象后直接调用(TP中自带的快捷函数)
//R("index/biaoji");
}
}
6.参数传值
public function test(){
//第一中GET传值
//echo $_GET["code"];
//echo $_GET["name"];
//echo $_GET["abc"];
}
//浏览器地址栏
http://localhost:8080/thinkphp/index.php/Home/index/test/code/123/name/李四/abc/MVC
//第二种接收形参传值
public function test($code,$name){
echo $code;
echo $name;
}
//浏览器地址栏
http://localhost:8080/thinkphp/index.php/Home/index/test/code/123/name/李四
ThinkPHP—URL的访问以及各种方法的操作的更多相关文章
- thinkphp支持大小写url地址访问,不产生下划线
from:http://www.111cn.net/phper/thinkPhp/57748.htm 一.在配置文件中开启了thinkphp的大小写识别功能,使链接大小写都可以正常访问: ‘URL_C ...
- ThinkPHP函数详解:U方法
U方法用于完成对URL地址的组装,特点在于可以自动根据当前的URL模式和设置生成对应的URL地址,格式为:U('地址','参数','伪静态','是否跳转','显示域名');在模板中使用U方法而不是固定 ...
- thinkphp url模式
入口文件是应用的单一入口,对应用的所有请求都定向到应用入口文件,系统会从URL参数中解析当前请求的模块.控制器和操作: http://serverName/index.php/模块/控制器/操作 这是 ...
- Thinkphp 3.2.2 验证码check_verify方法,只能验证一次
问题: Thinkphp 3.2.2 验证码check_verify方法,只能验证一次. function check_verify($code, $id = ''){ $verify = \Thin ...
- ajax的访问 WebService 的方法
如果想用ajax进行访问 首先在web.config里进行设置 添加在 <webServices> <protocols> <add name= "HttpPo ...
- thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成(十五)
原文:thinkphp URL规则.URL伪静态.URL路由.URL重写.URL生成(十五) 本章节:详细介绍thinkphp URL规则.URL伪静态.URL路由.URL重写.URL生成 一.URL ...
- HTTP协议详解以及URL具体访问过程
1.简介 1.1.HTTP协议是什么? 即超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准.从 ...
- Thinkphp学习笔记5-URL生成U方法
为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响. 定义规则 ...
- php 伪造HTTP_REFERER页面URL来源的三种方法
php获取当前页面的前一个页面URL地址,即当前页面是从哪个页面链接过来的,可以使用$_SERVER['HTTP_REFERER']; 但是$_SERVER['HTTP_REFERER']也是可以被伪 ...
随机推荐
- 仿EXCEL插件,智表ZCELL产品V1.5 版本发布,IE8/9完全兼容
详细请移步 智表(ZCELL)官网www.zcell.net 更新说明 这次更新主要应用户要求,主要解决了IE8/9等低版本浏览器兼容的问题,新增了部分功能,欢迎大家体验使用. 本次版本更新内容如下 ...
- Why Ambari is setting the security protocol of the kafka to PLAINTEXTSASL instead of SASL_PLAINTEXT?
首页 / Data Ingestion & Streaming / Why Ambari is setting the security protocol of the kafka to PL ...
- python一直放弃到双数的day10
今天接着来说那个新的大知识点,函数,函数中是可以传递一个数值的,这个数值简称为参数,对于参数,他可以是任意个数和任意类型(数据类型).参数的其中一种有位置传参,函数中的参数有几个,那么就要传入几个,传 ...
- vmware workstation安装教程以及其中出现的错误解决方法
VMware Workstation 安装教程 1 下载好虚拟机,然后运行,点击下一步 2 选择我接受,下一步 3 选择安装的位置,可以自己选择,也可以默认不更改,这个无影响(图中I:\下面的VM ...
- UA大全
####PC端UA #Opera "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Ch ...
- Spring boot的第一个demo
由于SpringBoot的问世使开发的门槛有降低了不少,就其这一点,早已使其名声大振,如雷贯耳.我之前是使用spring开发的,刚才使用了spring boot试验了一下,果然名不虚传,开发速度贼快. ...
- ubuntu beyond compare到期后续期
rm -f /home/agu/.config/bcompare/registry.dat 或者加入定时任务,每天10:00执行 crontab -e * 10 * * * rm -f /home/a ...
- react native输入框定位在底部(虚拟键盘弹起)
1.通过Keyboard获取键盘高度,改变定位的bottom 缺点:虚拟键盘完全弹起时,才会获取到键盘高度,定位稍有延迟,而且键盘收起时,定位会出现悬空状态,然后再回到底部 import React, ...
- SOme USeful NOtes for MYself.
SOme USeful NOtes for MYself. B站神奇的频道(YouTube里同名):关于微积分/线代/梯度下降/DL等数学知识的理解,对理解DL很有帮助 https://space.b ...
- python 第三方库的加载与虚拟机的登录
通过pip来安装python模块(pip方式仅需要联网即可,不需要下载其他文件即可实现扩展库哦的安装.升级和卸载).下载python3.5以上的版本(包括3.5),在我的电脑输入cmd进入命令提示符, ...