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/李四
複製代碼
相關文章
相關標籤/搜索