asaokamei/slim4-starter

基于 Slim4 + PHP-DI 的我的启动项目。

0.1.5 2021-08-07 07:06 UTC

This package is auto-updated.

Last update: 2024-09-07 14:17:38 UTC


README

这是一个为普通网站提供的启动项目,基于 slim/slim-skeleton

使用:

  • Slim4
  • PHP-DI
  • nyholm/psr7
  • monolog
  • Twig (使用 slim/twig-view)
  • Aura/Session
  • filp/whoops
  • vlucas/phpdotenv

许可

MIT 许可证

演示

安装。

git clone https://github.com/asaokamei/slim4-starter
cd slim4-starter
composer install

安装后运行演示。

cd public
php -S 127.0.0.1:8000 index.php

AbstractController

App\Controllers\AbstractController 提供了有用的功能,例如:

  • 根据 HTTP 方法执行类方法。
  • 将参数与输入值绑定。
  • 修改输入值。

例如,当 HTTP 方法为 post 时,会执行 onPost 方法。

use App\Controllers\AbstractController;

class WelcomeController extends AbstractController
{
    public function action() {} // <- always executed, or
    public function onMethod() {} // <- executed based on HTTP method
}

方法执行

  1. 如果存在 action 方法,则始终执行 action
  2. 检查 HTTP 方法,并执行 on{$method}
  3. 使用 _method 传递参数来指定除 'GET' 和 'POST' 之外的 HTTP 方法。

绑定参数

对于路由 /users/{user_id},参数 $user_id 与路由变量 {user_id} 绑定。

class WelcomeController extends AbstractController {
    public function onGet($user_id) {}
}

修改输入值

您可以使用控制器中的 arg{$InputKey} 方法修改输入值。

  • 返回一个单一值以替换原始输入值,如 argTags 中所示。
  • 或者,返回一个关联数组以创建一个新条目,如 argUserId 中所示。
// 'users/{user_id}/{tags}
class WelcomeController extends AbstractController
{
    public function onGet($user_id) {}

    private function argUserId($user_id) {
        return ['user' => $this->user->find($user_id)];
    }
    private function argTags($tags) {
        return explode(',', $tags);
    }
}

Twig 函数

为 Twig 提供额外的函数。

csrf_token()

Slim-Csrf 中的隐藏标签提供 CSRF 令牌(之前为 hidden_csrf_token())。

{{ csrf_token() }}

path(string $routeName, array $data = [], array $queryParams = [])

获取命名路由的 URL(与 slim/twig-view 中的 url_for() 相同)。

url(string $routeName, array $data = [], array $queryParams = [])

获取命名路由的完整 URL。(与 slim/twig-view 中的 full_url_for() 相同)。

来自 slim/twig-view 的更多函数。

is_current_url(string $routeName, array $data = [])

检查路由名称是否为当前 URL。

current_url(bool $withQueryString = false)

获取当前路径。

get_uri()

获取 Psr\Http\Message\UriInterface 对象。

base_path()

获取基本路径字符串。