Glue 是一个用于快速启动基于包的应用程序的包

0.3.0 2015-12-11 16:54 UTC

This package is auto-updated.

Last update: 2024-09-08 01:10:08 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

什么是 Glue?

Glue 是一种用于粘合物体或材料的粘合剂( ͡° ͜ʖ ͡°)

Glue 也是一个辅助包,旨在快速启动基于包的应用程序。在其核心中,它只是一个容器和快速 PSR7 设置,在其之上粘合了服务提供者和中间件。

这并不是一个微框架(在这一点上,它不会限制你的工作)。如果你在寻找这个,我建议使用 SilexSlim 或其他你想要的。相反,Glue 就像其名字所暗示的那样,只是用来连接现有包和中间件的一点点粘合剂。它不会做太多假设,不会妨碍你,它只是把东西粘在一起的一种方式。

它看起来像什么

简单来说,Glue 将以下常见设置(容器 + 路由 + PSR7)转换为以下设置

<?php
// Create container
$container = new Container();
$container->addServiceProvider(SomeProvider::class);
$container->addServiceProvider(AnotherProvider::class);

// Create router and routes
$router = new RouteCollection($container);
$router->get('/', 'SomeController::index');

// Create PSR7 middleware handler
$relay = (new RelayBuilder())->newInstance([
    SomeMiddleware::class,
    function($request, $response, $next) use ($router) {
        $next($request, $router->dispatch($request, $response));
    },
]);

// Create PSR7 stack
$request = ServerRequestFactory::fromGlobals();
$response = $relay(new Request, new Response());

(new SapiEmitter())->emit($response);

变成这个

$app = (new Glue())
    ->setServiceProviders([
        new SomeServiceProvider(),
        new AnotherServiceProvider(),
        new LeagueRouteServiceProvider(),
    ])
    ->setMiddlewares([
        SomeMiddleware::class,
        LeagueRouteMiddleware::class,
    ]);

// Decorates a router of your choice
$app->get('/', 'SomeController::index');

$app->run();

为了真正灵活,Glue 接受任何 PSR11 兼容的容器,并通过 service-provider 标准注册其服务。

如你所见,Glue 有两个目的:消除将包绑定在一起时的重复样板代码,并为如 league/route 这样的常用包提供服务提供者。它是可配置和灵活的,不会妨碍你,它只是在这里帮助你不必一遍又一遍地输入相同的内容。

箱子里有什么

Glue 提供了几个服务提供者

  • 路由

    • 基于 league/route 的基本路由系统
    • 基于 zendframework/zend-diactoros 的 PSR7 栈
    • 视图引擎,使用 twig/twig
    • 可选的基本控制器
  • 业务

    • 使用 illuminate/database 处理数据库
    • 使用 robmorgan/phinx 进行迁移
    • 使用 league/tactician 的命令总线
  • 开发

    • 使用 vlucas/phpdotenv 的 .env 文件
    • 使用 monolog/monolog 处理日志
    • 使用 maximebf/debugbar 的调试栏
    • 使用 symfony/console 的小 CLI
    • 使用 league/flysystem 的文件系统
    • 使用 psy/psysh 的 REPL

这些中的任何一个都可以被覆盖或删除;此包不会强制执行任何结构或特定依赖项的使用。

为什么?因为我做了很多非常小的 Web 应用程序,为自己或公共的,并且厌倦了第一百次走同样的流程。然后我想其他人可能也有同样的用例,所以我们就在这里。

安装

$ composer require madewithlove/glue

用法

有关更多信息,请参阅 文档

变更日志

请参阅 变更日志 了解最近更改了哪些内容。

测试

$ composer test

贡献

请参阅 贡献行为准则 以获取详细信息。

安全

如果你发现任何安全相关的问题,请通过电子邮件 heroes@madewithlove.be 而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。