devvime / kiichi-php-engine
用于使用 Kiichi PHP 开发 Web API 的简单 PHP 包。
1.2.0
2024-05-11 03:04 UTC
Requires
- php: >=8.2.0
- firebase/php-jwt: ^5.2
- illuminate/database: ^9.50
- phpmailer/phpmailer: ^6.1
- rain/raintpl: 3.0.0
- vlucas/phpdotenv: ^5.4
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 文档。