PHP Class phprs\Router

通常每一个请求只对应到一个最严格匹配的API接口, 所谓"最严格匹配",比如: API1 接口 => url: /apis/test API2 接口 => url: /apis 那么当请求"/apis/test/123/" 最严格匹配的接口是API1 如果需要让一个请求经过多个API调用, 比如有时候会需要一个统一验证的接口, 让所有请 求先通过验证接口, 再调用其他接口. 此时可以通过Router的hooks属性, 设置一组hook实 现. hook其实和普通的接口一样, 只是在hooks中指定后, 执行行为将有所不同: 请求会按 优先级逐个经过hook, 只要匹配, hook的方法就会被调用, 直到最后调用普通的API 通过@return({"break", true})停止请求链路
Author: caoym
Show file Open project: caoym/phprs-restful

Public Properties

Property Type Description
$default_strict_matching 指定路由规则默认情况下是否严格匹配path,如果@route中已经指定严格模式,则忽略此默认设置 严格模式将只允许同级目录匹配,否则父目录和子目录也匹配。 非严格匹配时 路由"GET /a" 和请求"GET /a"、"GET /a/b"、"GET /a/b/c"等匹配 严格匹配时 路由"GET /a" 和请求"GET /a"匹配、和"GET /a/b"、"GET /a/b/c"等不匹配
$factory
$ignore_load_error
$url_begin 用于匹配路由的url偏移

Public Methods

Method Description
__construct ( )
__invoke ( Request $request = null, Response &$respond = null ) : void 调用路由规则匹配的api
addRoutes ( string $apis_dir, string $class = null, string $method = null ) : void
getApiFiles ( ) : array 获取api文件列表
getHooks ( ) : array
getRoutes ( ) : array
load ( string | array $api_path, string $apis = null, string $api_method = null )

Private Methods

Method Description
invokeRoute ( array $routes, unknown $request, unknown &$respond ) : boolean 调用路由规则匹配的api
loadApi ( array &$routes, string $class_file, string $class_name, string $method = null ) : void 加载api类
loadRoutes ( &$routes, string $apis_dir, string $class, string $method ) : Router 遍历API目录生成路由规则

Method Details

__construct() public method

public __construct ( )

__invoke() public method

调用路由规则匹配的api
public __invoke ( Request $request = null, Response &$respond = null ) : void
$request Request
$respond Response
return void

addRoutes() public method

public addRoutes ( string $apis_dir, string $class = null, string $method = null ) : void
$apis_dir string
$class string
$method string
return void

getApiFiles() public method

获取api文件列表
public getApiFiles ( ) : array
return array

getHooks() public method

public getHooks ( ) : array
return array

getRoutes() public method

public getRoutes ( ) : array
return array

load() public method

public load ( string | array $api_path, string $apis = null, string $api_method = null )
$api_path string | array
$apis string
$api_method string

Property Details

$default_strict_matching public property

指定路由规则默认情况下是否严格匹配path,如果@route中已经指定严格模式,则忽略此默认设置 严格模式将只允许同级目录匹配,否则父目录和子目录也匹配。 非严格匹配时 路由"GET /a" 和请求"GET /a"、"GET /a/b"、"GET /a/b/c"等匹配 严格匹配时 路由"GET /a" 和请求"GET /a"匹配、和"GET /a/b"、"GET /a/b/c"等不匹配
public $default_strict_matching

$factory public property

public $factory

$ignore_load_error public property

public $ignore_load_error

$url_begin public property

用于匹配路由的url偏移
public $url_begin