程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> gene框架文檔,gene框架

gene框架文檔,gene框架

編輯:關於C語言

gene框架文檔,gene框架


路由類 Gene\Router

  • 介紹

    Gene\Router 是gene框架的核心類之一,本框架區別於其他常見框架的最大地方就是獨特、強大、簡單的路由定義等。
    路由強大靈活,支持回調、類方法;支持rest、http請求方式(get,post,put,patch,delete,trace,connect,options,head)等; 支持定義全局、局部鉤子,每個方法可以定義清理全局鉤子等。

  • 實例化

    初始化路由,傳遞緩存key,將會把路由配置緩存起來。
    Gene\Router如果作為gene_application應用的路由配置使用,可以不傳遞緩存key,自動沿用應用的標志名稱;如果作為一個獨立的功能使用,則需要傳遞緩存key,區別不同的路由配置。

    參數:

    參數類型是否必填注釋 keyName String 否 路由緩存標志

    返回值: Gene\Router實例化對象本身。

    實例:

    //實例化路由對象
    $router = new Gene\Router();
  • 設置路由系列方法

    方法:get,post,put,patch,delete,trace,connect,options,head;
    設置路由的方法,涵蓋rest操作的基本方法。 路由路徑支持參數,回調方法支持類方法和匿名函數,鉤子定義路由鉤子及全局鉤子。

    參數:

    參數類型是否必填注釋 routerPath String 是 路由路徑,支持參數。 callback String or Closure 是 回調方法,支持類方法和匿名函數。 hook String 否 路由鉤子,設置鉤子、設置全局鉤子。

    返回值: Gene\Router實例化對象本身。

    實例1:路由設置類方法

    訪問路由地址,將會調用設置的類的方法。 類方法的格式:classNanme@methodName.
    比如: index@list;

    //實例化路由對象
    $router = new Gene\Router();
    //路由設置類方法
    $router->get("/","Controllers_Index@index");

    實例2:路由設置匿名函數

    訪問路由地址,將會調用設置的匿名函數。

    //實例化路由對象
    $router = new Gene\Router();
    //路由設置匿名函數
    $router->get("/",function(){
    	echo "index";
    });

    實例3:路由設置支持參數

    訪問路由地址,將會把定義的路由參數傳遞給回調方法裡面。
    參數的格式:冒號後面加參數名。
    比如:":id"。
    回調方法裡面獲取參數:路由裡面的參數(可能有多個),作為一個數組傳遞給回調方法,回調方法裡面可以直接獲取。

    //實例化路由對象
    $router = new Gene\Router();
    //路由設置支持參數
    $router->get("/news/:id.html",function($params){
    	echo "id:" , $params['id'];
    });

    實例4:路由設置鉤子

    路由鉤子可以設置當前路由的鉤子,也可以設置全局鉤子,或者禁用全局鉤子。
    鉤子的格式:curHookName@globalHook。
    globalHook參數列表: clearBefore 禁用前置全局鉤子
    clearBefore 禁用後置全局鉤子
    clearAll 禁用前置、後置全局鉤子
    注意:路由裡面設置鉤子過後,需要調用鉤子定義方法定義需要的鉤子。

    //實例化路由對象
    $router = new Gene\Router();
    //路由設置鉤子
    $router->get("/admin/index", Controllers_Admin_Index@index, "adminHook");
    
    /*  定義後台管理員權限檢查鉤子 */
    $router->hook("adminHook", function () {
        if (!isset($_SESSION['admin']['user_id'])) {
            die('沒有操作權限!');
        }
    });
  • hook

    定義鉤子,可以自定義鉤子名稱(before、after除外)。
    before:默認前置全局鉤子;
    after:默認後置全局鉤子;
    全局鉤子定義後默認都會執行,除非路由定義裡面聲明排除:
    比如排除前置全局鉤子:@clearBefore;

    參數:

    參數類型是否必填注釋 hookName String 是 鉤子名稱。 callback String or Closure 是 回調方法,支持類方法和匿名函數。

    返回值: Gene\Router實例化對象本身。

    實例1:定義前置全局鉤子

    //實例化路由對象
    $router = new Gene\Router();
    //定義前置全局鉤子
    $router->hook("before", function(){
    	echo " before ";
    });

    實例2:定義後置全局鉤子

    //實例化路由對象
    $router = new Gene\Router();
    //定義後置全局鉤子
    $router->hook("after", function($params){
    	echo " after ";
    	if(is_array($params))var_dump($params);
    });

    實例3:定義自定義鉤子

    //實例化路由對象
    $router = new Gene\Router();
    //定義自定義鉤子
    $router ->hook("webCheck", function () {
        isset($_SESSION) || session_start();
        if (!isset($_SESSION['user']['user_id'])) {
            header('/login.html', 302);
            die;
        }
    });
  • group

    路由分組方法。
    如果有多個路由定義公用了共同的前綴,就可以使用group方法定義前綴。
    group方法必須成對使用,形成閉環。 其他類似功能方法:prefix。

    參數:

    參數類型是否必填注釋 name String 否 分組名稱,如果參數不為空就是打開分組,為空就是關閉分組;

    返回值: Gene\Router實例化對象本身。

    實例:

    //實例化路由對象
    $router = new Gene\Router();
    //路由分組:將後台的用戶管理放在一個分組裡面
    $router
    ->group("/admin/user")
        ->get("/add", "Controllers_Admin_User@add", "adminAuth@clearAll")
        ->post("/addPost", "Controllers_Admin_User@addPost", "adminAuth@clearBefore")
        ->get("/edit/:id", "Controllers_Admin_User@edit", "adminAuth@clearAll")
        ->post("/editPost", "Controllers_Admin_User@editPost", "adminAuth@clearBefore")
        ->get("/del/:id", "Controllers_Admin_User@del", "adminAuth@clearBefore")
    ->group();
  • error

    定義路由錯誤處理。
    默認內置了401處理鉤子,如果定義了401錯誤,路由處理失敗會自動調用。

    參數:

    參數類型是否必填注釋 hookName String 是 鉤子名稱。 callback String or Closure 是 回調方法,支持類方法和匿名函數。

    返回值: Gene\Router實例化對象本身。

    實例:

    //實例化路由對象
    $router = new Gene\Router();
    //定義401
    $router->error(401, function () {
            echo " 401 ";
    });
  • getTime

    獲取當前路由配置的緩存時間。

    參數:

    返回值: String。

    實例:

    //實例化路由對象
    $router = new Gene\Router();
    $time = $router->getTime();
  • getEvent

    獲取當前路由緩存的事件。

    參數:

    返回值: array。

    實例:

    //實例化路由對象
    $router = new Gene\Router();
    $event = $router->getEvent();
  • getTree

    獲取當前路由緩存的路由定義。

    參數:

    返回值: array。

    實例:

    //實例化路由對象
    $router = new Gene\Router();
    $tree = $router->getTree();
  • delEvent

    刪除當前路由緩存的時間。

    參數:

    參數類型是否必填注釋 keyName String 否 緩存名稱, 默認刪除當前項目。

    返回值: boolean。

    實例:

    //實例化路由對象
    $router = new Gene\Router();
    $result = $router->delEvent();
  • delTree

    刪除當前路由緩存的路由定義。

    參數:

    參數類型是否必填注釋 keyName String 否 緩存名稱, 默認刪除當前項目。

    返回值: boolean。

    實例:

    //實例化路由對象
    $router = new Gene\Router();
    $result = $router->delTree();
  • clear

    清空當前路由緩存的路由定義和事件。

    參數:

    參數類型是否必填注釋 keyName String 否 緩存名稱, 默認刪除當前項目。

    返回值: boolean。

    實例:

    //實例化路由對象
    $router = new Gene\Router();
    $result = $router->clear();
  • getRouter

    獲取路由對象。

    參數:

    返回值: Gene\Router實例化對象本身。

    實例:

    //獲取實例化路由對象
    $router = Gene\Router::getRouter();
  • run

    該方法執行後會運行路由定義。默認web應用可以不傳參數,如果是cli方式下訪問或者執行任務,則需要傳遞參數。
    前面gene_application裡面也有run方法,其實是調用的Gene\Router裡面的run。
    兩者的區別是: gene_application裡面封裝了配置加載更新的邏輯,不修改是不會重復加載的,實現了高效率。
    Gene\Router裡面沒有處理緩存判斷,如果單獨使用Gene\Router模塊的話,用戶需要使用getTime方法獲取已緩存時間,進行判斷處理。

    參數:

    參數類型是否必填注釋 method String 否 請求方式(默認自動取訪問方式:get、post等) path String 否 請求路徑(默認自動取訪問路徑:比如/admin/login)

    返回值: Gene\Router實例化對象本身。

    實例1:web應用

    //實例化路由對象
    $router = new Gene\Router();
    //配置路由
    $router->clear()
    	->get("/",function(){
    		echo "index";
    	})
        ->run();

    實例2:cli應用

    //實例化路由對象
    $router = new Gene\Router();
    //配置路由
    $router->clear()
    	->get("/",function(){
    		echo "index";
    	})
        ->run('get', '/admin/task')
  • runError

    運行已定義的error。

    參數:

    參數類型是否必填注釋 errorName String 是 error名稱。

    返回值: boolean。

    實例:

    //實例化路由對象
    $router = new Gene\Router();
    $result = $router->runError("401");

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved