zhukmax / waymark
php7.1+ 项目的路由器
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 数据,你可以使用 Request 静态方法。这些方法为 intiger、email、boolean、array、files、images 提供基本数据过滤器。路由中的参数只能是字符串({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。你可以在许可证文件中找到许可证文本。