erdum/php-weekend

一组简单的最小函数集,提供您在无需设置时间的情况下构建API和Web应用的能力

v1.1.1 2023-11-07 12:09 UTC

This package is auto-updated.

Last update: 2024-09-08 08:40:48 UTC


README

一组简单的最小函数集,提供您在无需设置时间的情况下构建API和Web应用的能力

目录

特性

  • 使用动态路由的路由
  • 模板化
  • 访问请求数据的方法
  • 发送json数据的方法
  • 可定制
  • 无设计限制,按您想要的任何方式构建API
  • 零配置

安装

使用composer安装PHP-Weekend

composer require erdum/php-weekend

或者,在较旧的PHP版本上不使用composer安装,只需复制src目录,并require App.php和Router.php

<?php

require(__DIR__ . '/src/App.php');
require(__DIR__ . '/src/Router.php');

use PhpWeekend\Router;
use PhpWeekend\App;

Router::get('/', function() {
    App::send_json(array('data' => 'Hello, World!'));
});

Router::get('/simple', function() {
    App::send_response('This is the content.', 200, 'text/html');
});

Router::get('/get_pdf', function() {
    App::send_file(__DIR__ . '/static/my_file.pdf');
});

使用

安装包后,您的项目目录将有以下内容

ls
  • composer.json
  • composer.lock
  • vendor

创建一个index.php文件

<?php

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

use PhpWeekend\Router;
use PhpWeekend\App;

Router::get('/', function() {
    App::send_json(['data' => 'Hello, World!']);
});

/*
Router also have
post
put
patch
delete
any
*/

您可以使用一个函数获取任何格式的请求数据

  • 查询参数
  • 表单数据
  • multipart/form-data
  • application/json
<?php

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

use PhpWeekend\Router;
use PhpWeekend\App;

Router::post('/', function() {
    $request_payload = App::get_request();

    App::send_json(['data' => $request_payload], 201);
});

您还可以构建动态路由

<?php

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

use PhpWeekend\Router;
use PhpWeekend\App;

Router::get('/user/$name', function($name) {
    App::send_json(['data' => $name]);
});

您还可以使用模板,在项目根目录中创建一个名为templates的目录

mkdir templates

在您的模板目录内部,您可以构建模板,如home.php

<h1><?= $data ?></h1>
<h2><?= $foo ?></h2>

<?php if ($age > 18): ?>
    Hello
<?php else: ?>
    whatsapp
<?php endif; ?>

现在您可以从index文件中渲染home.php模板

<?php

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

use PhpWeekend\Router;
use PhpWeekend\App;

Router::get('/', function() {
    App::send_template('home', [
        'data' => 'Hello, World!',
        'foo' => 'bar',
        'age' => 18
    ]);
});

App还提供了csrf功能

<form>
    <input type="name" name="user-name">
    <input type="email" name="user-email">
    <?= set_csrf() ?>
</form>

现在在处理器中验证csrf令牌

<?php

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

use PhpWeekend\Router;
use PhpWeekend\App;

Router::get('/', function() {

    if (App::is_csrf_valid()) {
        // CSRF token validated
    }
});

反馈

如果您有任何反馈,请通过erdumadnan@gmail.com联系我们

贡献者

许可

MIT License