erykai/routes

负责管理应用路由

维护者

详细信息

github.com/Erykai/routes

源代码

问题

资助包维护!
Erykai

v1.3.5 2023-04-04 21:35 UTC

This package is auto-updated.

Last update: 2024-09-11 20:15:55 UTC


README

Maintainer Source Code PHP from Packagist Latest Version Software License Quality Score Total Downloads

负责应用路由的包,包括中间件,适用于创建API REST的路由。

安装

Composer

"erykai/routes": "1.3.*"

终端

composer require erykai/routes

创建Apache的 .htaccess

RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?route=$1

或者nginx

location / {
  if ($script_filename !~ "-f"){
    rewrite ^(.*)$ /index.php?route=$1 break;
  }
}

创建index.php

use Erykai\Routes\Route;

require "vendor/autoload.php";

$route = new Route();
$route->namespace('Erykai\Routes');

$route->get('/', 'Controller@home');
$route->get('/post', 'Controller@post');
$route->get('/post/{id}', 'Controller@post');
$route->get('/post/{id}/{slug}', 'Controller@post');
$route->post('/login', 'Controller@login');
$route->post('/create/post', 'Controller@post');
$route->put('/edit/post', 'Controller@postPut');
$route->delete('/delete/post', 'Controller@postDelete');
//create all get, post, put and delete
$route->default('/user', 'Controller');
$route->exec();

var_dump($route->response());

在index.php中配置JWT键的路由和中间件

use Erykai\Routes\Route;

require "vendor/autoload.php";

const KEY_JWT = '1AAAJ@90jjkhgO```˜˜˜IHJN';

$route = new Route();
$route->namespace('Erykai\Routes');

$route->get('/', 'Controller@home');
$route->get('/post', 'Controller@post');
$route->get('/post/{id}', 'Controller@post', true);
$route->get('/post/{id}/{slug}', 'Controller@post', true);
$route->post('/login', 'Controller@login');
$route->post('/create/post', 'Controller@post', true);
$route->put('/edit/post', 'Controller@postPut', true);
$route->delete('/delete/post', 'Controller@postDelete', true);
//create all get, post, put and delete
$route->default('/user', 'Controller', [true,false,false,false]);
$route->exec();

var_dump($route->response());

在index.php中配置JWT键的路由和中间件,以及响应类型

use Erykai\Routes\Route;

require "vendor/autoload.php";

const KEY_JWT = '1AAAJ@90jjkhgO```˜˜˜IHJN';

$route = new Route();
$route->namespace('Erykai\Routes');

$route->get('/', 'Controller@home', type: "json");
$route->get('/post', 'Controller@post');
$route->get('/post/{id}', 'Controller@post', true, "object");
$route->get('/post/{id}/{slug}', 'Controller@post', true, "array");
$route->post('/login', 'Controller@login', type: "json");
$route->post('/create/post', 'Controller@post', true, "json");
$route->put('/edit/post', 'Controller@postPut', true, "json");
$route->delete('/delete/post', 'Controller@postDelete', true, "json");
//create all get, post, put and delete
$route->default('/user', 'Controller', [true,false,false,false], "json");
$route->exec();

var_dump($route->response());

创建控制器类Controller.php

namespace Erykai\Routes;

use stdClass;

/**
 * Example object define routes
 */
class Controller
{
    /**
     * @return bool
     */
    public function home(?array $data, string $response): bool
    {
        echo "home";
        var_dump($response);
        return true;
    }

    /**
     * @return bool
     */
    public function login(?array $data, string $response): bool
    {
        $json = file_get_contents('php://input');
        $login = json_decode($json);
        if (empty($login->email) || empty($login->password)) {
            echo 203 . " Email ou senha invalido";
            return false;
        }

        if(!filter_var($login->email, FILTER_VALIDATE_EMAIL)){
            echo 203 . " Email invalido";
            return false;
        }

        $user = new stdClass();
        $user->email = "webav.com.br@gmail.com";
        $user->password = "10203040";

        if($user->email !== $login->email){
            echo 203 . " Email ou senha invalido";
            return false;
        }

        if($user->password !== $login->password){
            echo 203 . " Email ou senha invalido";
            return false;
        }
        $middleware = new Middleware();
        echo $middleware->create($user->email);
        return true;
    }

    /**
     * @param array|null $data
     * @return bool
     */
    public function post(?array $data, string $response): bool
    {
        var_dump($data, $_POST, file_get_contents('php://input'));
        return true;
    }

    /**
     * @param array $data
     * @return bool
     */
    public function postPut(?array $data, string $response): bool
    {
        var_dump($data, file_get_contents('php://input'));
        return true;

    }

    /**
     * @param array $data
     * @return bool
     */
    public function postDelete(?array $data, string $response): bool
    {
        var_dump($data, file_get_contents('php://input'));
        return true;

    }
}

贡献

所有贡献都将被分析,如果你进行了多项更改,请逐项提交。

支持

如果你发现错误,请发送电子邮件到 webav.com.br@gmail.com 报告。

鸣谢

许可协议

MIT许可协议(MIT)。请参阅 许可协议 了解更多信息。