zhukmax/waymark

php7.1+ 项目的路由器

3.0.0 2020-07-26 13:20 UTC

This package is auto-updated.

Last update: 2024-09-26 22:07:30 UTC


README

Latest Version on Packagist Software License Total Downloads

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 静态方法。这些方法为 intigeremailbooleanarrayfilesimages 提供基本数据过滤器。路由中的参数只能是字符串({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。你可以在许可证文件中找到许可证文本。