devvime/kiichi-php-engine

用于使用 Kiichi PHP 开发 Web API 的简单 PHP 包。

1.2.0 2024-05-11 03:04 UTC

This package is auto-updated.

Last update: 2024-09-11 03:46:56 UTC


README

用于使用 Kiichi PHP 开发 Web API 的简单 PHP 包。

规范和依赖关系

安装包

在项目根目录中运行 composer 命令

composer require devvime/kiichi-php-engine

配置

<?php

require_once(__DIR__.'vendor/autoload.php');

use Devvime\Kiichi\Engine\Router;

$router = new Router();

创建路由

路由和函数

$router->get('/', function($req, $res) {
    $res->json(['title'=>'Simple CRUD PHP']);
});

路由和类

使用类的文件夹结构

├── src
|  ├── Controllers
│  |  └── ProductController.php
|  |── Models
│  |  └── Product.php
|  |── Middlewares
│  |  └── ExempleMiddleware.php

类名必须包含单词 Controller,例如:UserController.php

$router->get('/:id', 'UserController@find');

URL 中的路由和参数组

$router->group('/hello', function() use($router) {
    $router->get('/:name', function($req, $res) {
        $res->render('html-file-name', [
            "name"=>$req->params->name            
        ]);
    });
});

$router->group('/user', function() use($router) {
    $router->get('', 'UserController@index');
    $router->get('/:id', 'UserController@find');
    $router->post('', 'UserController@store');
    $router->put('/:id', 'UserController@update');
    $router->delete('/:id', 'UserController@destroy');
});

路由和中间件

中间件类名必须包含单词 Middleware,例如:AuthMiddleware.php

// Middleware in  Function
$router->get('/:id', 'UserController@find', function() {
    // Middleware code...
});

// Middleware in Class
$router->get('/:id', 'UserController@find', 'UserMiddleware@verifyAuthToken');

// Middleware Function in Route Group

$router->group('/user', function() use($router) {
    $router->get('', 'UserController@index');
    $router->get('/:id', 'UserController@find');
    $router->post('', 'UserController@store');
    $router->put('/:id', 'UserController@update');
    $router->delete('/:id', 'UserController@destroy');
}, function() {
    // Middleware code...
});

// Middleware Class in Route Group

$router->group('/user', function() use($router) {
    $router->get('', 'UserController@index');
    $router->get('/:id', 'UserController@find');
    $router->post('', 'UserController@store');
    $router->put('/:id', 'UserController@update');
    $router->delete('/:id', 'UserController@destroy');
}, 'AuthMiddleware@verifyToken');

请求数据

URL 查询中的请求数据,例如:http://api.server.com/user?name=steve

$router->post('/user', function($req, $res) {
    $name = $req->query->name;
});

请求 POST 数据 JSON

$router->post('/user', function($req, $res) {
    $name = $req->body->name;
    $email = $req->body->email;
});

URL 中的请求参数

$router->put('/:id', function($req, $res) {
    $id = $req->params->id;
});

启动路由

$router->run();

渲染 HTML 文件

要渲染 HTML 文件,只需使用 $res->render('file-name'); 无需在文件名中添加 .html

$router->get('/user', function($req, $res) use($router) {
    $res->render('html-file-name');
});

要通过发送数据数组来渲染 HTML 文件,请使用 $res->render('file-name');

$router->get('/user', function($req, $res) use($router) {
    $res->render('html-file-name', [
        "name"=>$user->name,
        "email"=>$user->email,
        "product"=>$productArray
    ]);
});

要接收发送到 HTML 文件的数据,请使用 {{ key }} 或 {{ key.object.name }}

<div class="card">
    <h4>{{ name }}</h4>
    <p>{{ email }}</p>
    <hr/>
    <p>{{ product.title }}</p>
    <p>{{ product.description }}</p>
    <p>{{ product.price }}</p>
</div>

有关更多详细信息,请参阅 RainTPL 3 文档。