zhukmax / simple-router
3.0.0
2020-07-26 13:20 UTC
Requires
- php: >=7.1.0
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^9.2
README
Waymark是一个适用于php7.1+项目(如API)的路由器。
安装
使用composer
$ composer require zhukmax/waymark
使用
如果你的项目需要模板引擎,你可以使用你喜欢的模板引擎,比如我在示例中使用Twig,但如果你需要仅返回json/csv响应,则只需使用Waymark,无需任何模板引擎。
<?php require_once './vendor/autoload.php'; use ProjectName\API\Controllers\IndexController; use Twig\Environment; use Twig\Loader\FilesystemLoader; use Zhukmax\Waymark\Router; /** Add Twig Template engine **/ $loader = new FilesystemLoader(__DIR__ . '/src/views'); $twig = new Environment($loader); (new Router([ 'tplEngine' => $twig, 'namespace' => '\\ProjectName\\API\\Controllers', 'routes' => dirname(__FILE__).'/routes.json' ])) ->get('/api/users', IndexController::class, 'actionGetAll', 'json') ->output();
带有路由示例的Json文件
{ "get": { "/users": [ "NameOfControllerWithoutControllerSuffix", "NameOfAction", "html" ], "/users/{id:int}": [ "NameOfControllerWithoutControllerSuffix", "NameOfAction", "html" ] } }
如果你需要在动作方法中使用$_GET/$_POST/$_FILES数据,可以使用请求的静态方法。这些方法具有对{name:str}
)或整数({id:int}
)。
<?php namespace ProjectName\API\Controllers; use Zhukmax\Waymark\AbstractController; use Zhukmax\Waymark\Request; class IndexController extends AbstractController { public static function actionGetAll() { $date = Request::get('date'); $page = Request::getInt('page', 0); return [ 'date' => $date, 'page'=> $page ]; } public function tst(string $date, int $page) { return $this->tpl->render('index.twig', [ 'date' => $date, 'page' => $page ]); } }
许可证
Apache许可证版本2.0。你可以在许可证文件中找到许可证文本。