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的访问以及各种方法的操作的更多相关文章

  1. thinkphp支持大小写url地址访问,不产生下划线

    from:http://www.111cn.net/phper/thinkPhp/57748.htm 一.在配置文件中开启了thinkphp的大小写识别功能,使链接大小写都可以正常访问: ‘URL_C ...

  2. ThinkPHP函数详解:U方法

    U方法用于完成对URL地址的组装,特点在于可以自动根据当前的URL模式和设置生成对应的URL地址,格式为:U('地址','参数','伪静态','是否跳转','显示域名');在模板中使用U方法而不是固定 ...

  3. thinkphp url模式

    入口文件是应用的单一入口,对应用的所有请求都定向到应用入口文件,系统会从URL参数中解析当前请求的模块.控制器和操作: http://serverName/index.php/模块/控制器/操作 这是 ...

  4. Thinkphp 3.2.2 验证码check_verify方法,只能验证一次

    问题: Thinkphp 3.2.2 验证码check_verify方法,只能验证一次. function check_verify($code, $id = ''){ $verify = \Thin ...

  5. ajax的访问 WebService 的方法

    如果想用ajax进行访问 首先在web.config里进行设置 添加在 <webServices> <protocols> <add name= "HttpPo ...

  6. thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成(十五)

    原文:thinkphp URL规则.URL伪静态.URL路由.URL重写.URL生成(十五) 本章节:详细介绍thinkphp URL规则.URL伪静态.URL路由.URL重写.URL生成 一.URL ...

  7. HTTP协议详解以及URL具体访问过程

    1.简介 1.1.HTTP协议是什么? 即超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准.从 ...

  8. Thinkphp学习笔记5-URL生成U方法

    为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响. 定义规则 ...

  9. php 伪造HTTP_REFERER页面URL来源的三种方法

    php获取当前页面的前一个页面URL地址,即当前页面是从哪个页面链接过来的,可以使用$_SERVER['HTTP_REFERER']; 但是$_SERVER['HTTP_REFERER']也是可以被伪 ...

随机推荐

  1. 基于gdal的格网插值

    格网插值就是使用离散的数据点创建一个栅格图像的过程.通常情况下,有一系列研究区域的离散点,如果我们想将这些点转换为规则的网格数据来进行进一步的处理,或者和其他网格数据进行合并 等处理,就需要使用格网插 ...

  2. 在windows系统下安装linux虚拟机(VMware)

    一.下载Vmware安装包(此处我安装的是VMware-workstation-full-14.1.3) 链接: https://pan.baidu.com/s/12xT1JaA7eheEgFfM-2 ...

  3. elementUi、iview、ant Design源码button结构篇

    在看elementUI的button组件的时候,一起和iview.ant Design的button组件比 较功能.样式.代码结构,看他们的一些不同点,不同的写法哪种会好些,button的对外开放的功 ...

  4. selenium3(java)之屏幕截图操作

    selenium提供了截图的功能,分别是接口是TakesScreenshot和类RemoteWebDriver.该功能是在运行测试用例的过程中,需要验证某个元素的状态或者显示的数值时,可以将屏幕截取下 ...

  5. 算法笔记-exgcd

    扩展欧几里得 扩展欧几里德算法是用来在已知a, b求解一组x,y, 使它们满足贝祖等式: ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理). 扩展欧几里德常用在求解模线性方 ...

  6. Scanner的使用 猜数字 +猜电影

    猜数字public class Main { public static void main(String[] args) { int random=(int)(Math.random()*100)+ ...

  7. Centos7下安装和配置vim

    Centos7 最新版本默认已经安装vim,可以使用命令查看是否安装 rpm -qa|grep vim 输出结果如下,如无以下输出结果,则安装vim: vim-filesystem-7.4.160-4 ...

  8. servlet(4)异常处理

    一.异常处理 当一个 Servlet 抛出一个异常时,处理异常的servlet可以从HttpServletRequest里面得到几个属性,如下: 1.javax.servlet.error.statu ...

  9. js slice 假分页

    语法 arrayObject.slice(start,end) 参数 描述 start 必需.规定从何处开始选取.如果是负数,那么它规定从数组尾部开始算起的位置.也就是说,-1 指最后一个元素,-2 ...

  10. Flask 构建微电影视频网站(五)

    基于角色的访问控制 权限管理 class AuthForm(FlaskForm): name = StringField( label='权限', validators=[ DataRequired( ...