热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ThinkPHP—URL的访问以及各种方法的操作

1.URL访问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()方法即可。

1 php
2 namespace Home\Controller;
3 use think\Controller;
4 class EmptyController extends Controller{
5 public function _empty(){
6 echo "控制器不存在";
7 }
8 }

 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.跨控制器调用

一个控制器在执行的时候,可以实例化另外一个控制,并通过对象访问其指定方法。

跨控制器调用可以节省我们代码的工作量

1 php
2 namespace Home\Controller;
3 //继承父类
4 use Think\Controller;
5 class IndexController extends Controller {
6 public function index(){
7 echo "哈哈哈";
8 }
9 public function test(){
10 //控制器间的调用
11 $this->index();
12      //调用标记
13      $this->mark("hello world");
14 }
15 //加标记
16 public function mark($s){
17 return "{$s}";
18 }
19 }

另外创建一个操作类进行跨控制器调用

1 php
2 namespace Home\Controller;
3 use Think\Controller;
4 class LoginController extends Controller {
5 public function diaoyong(){
6 //跨控制器调用 造对象
7 //$index = new \Home\Controller\IndexController();
8
9 //造控制器对象(TP中自带的快捷函数)
10 //$index = A("index");
11
12 //调用方法
13 //$index->mark("你好");
14
15 //造完对象后直接调用(TP中自带的快捷函数)
16 //R("index/biaoji");
17 }
18 }

 


转载于:https://www.cnblogs.com/sunzhenkun/p/7764805.html


推荐阅读
author-avatar
阿离说你是宝贝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有