ThinkPHP—URL的访问以及各类方法的操做

1.URL访问php

ThinkPHP采用单一入口模式访问应用,对应用的全部请求都定向到应用的入口文件,系统会从URL参数中解析当前请求的模块、控制器和操做,下面是一个标准的URL访问格式:thinkphp

第一种访问方式
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 该类的根命名空间/.../类名this

use Think\Controller;

定义命名空间:
namespace 该类的根命名空间/.../它所在的文件夹为止spa

namespace Home\Controller;

3.空操做和和空控制器处理3d

空操做:就没有指定的操做方法code

“空操做”本质意思:一个对象(控制器)调用自己不存在的方法对象

空操做有两种解决方案:blog

①     在对应的控制器里边制做一个方法,名称为”_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/李四
相关文章
相关标签/搜索