species/app

此软件包最新版本(0.3.3)没有提供许可信息。

另一个简单的应用程序框架。

0.3.3 2019-04-28 18:26 UTC

This package is auto-updated.

Last update: 2024-09-29 05:14:45 UTC


README

另一个简单的应用程序框架。

Slim 和 Twig 的粘合剂,配置了 PHP-DI,使用 php 7.2 编写!SlimTwig

安装

如果您想开始一个新项目,有可用的 骨架

composer create-project species/app-skeleton my-project-path

或者将其用作库

composer require species/app

中间件

如何使用 PHP-DI 配置添加中间件的示例

<?php 

use function DI\add;
use Species\App\Middleware;

return [
    'settings.middleware' => add([
        Middleware\TwigDebugMiddleware::class,
        Middleware\CsrfValidationMiddleware::class,
        Middleware\AddRouteNameToTwigMiddleware::class,
        // ...
    ]),
];

添加RouteNameToTwigMiddleware

如果可以找到,将添加 routeName 作为 twig 全局变量。

CsrfValidationMiddleware

将测试 POST 请求中的 csrfToken 字段是否有效。当无效时,将清除会话,重新生成会话 ID 并抛出 InvalidCsrfToken 异常。

TwigDebugMiddleware

当 twig 调试启用时,将添加 twig 调试扩展。

Slim HTTP 缓存

还打包了 slim/http-cache 库。

如何配置此中间件的示例

<?php 

use function DI\add;
use Slim\HttpCache\Cache as HttpCacheMiddleWare;

return [
    // Default settings
    'settings.httpCache.type' => 'private',
    'settings.httpCache.maxAge' => 86400,
    'settings.httpCache.mustRevalidate' => false,

    // Add middleware  
    'settings.middleware' => add([
        HttpCacheMiddleWare::class,
    ]),
];

Twig 扩展

如何使用配置添加 twig 全局变量和扩展的示例

<?php 

use function DI\add;
use Species\App\TwigExtension;

return [
    // Twig globals
    'settings.twig.globals' => add([
        'foo' => 'bar',
        // ...
    ]),
    
    // Twig extensions
    'settings.twig.extensions' => add([
        TwigExtension\CsrfTwigExtension::class,
        TwigExtension\ReflectionTwigExtension::class,
        TwigExtension\RouterTwigExtension::class,
        // ...
    ]),
];

CsrfTwigExtension

csrfTokenInput() 函数添加到渲染隐藏输入字段。或者使用 csrfToken(),它只返回令牌。

ReflectionTwigExtension

添加以下函数

  • fqcn(object $object): string 返回给定对象的完全限定类名。
  • className(object $object): string 返回给定对象的不带命名空间的类名。
  • instanceOf(object $object, string $class): bool 测试给定对象是否是给定类的实例。

RouterTwigExtension

添加全局 baseUrl 和以下函数

  • pathFor(string $name, array $data = [], array $queryParams = []): string 返回给定路由的路径。
  • urlFor(string $name, array $data = [], array $queryParams = []): string 返回给定路由的完整 URL。