madewithlove / glue
Glue 是一个用于快速启动基于包的应用程序的包
Requires
- php: >=5.6.0
- acclimate/container: ^1.0
- franzl/whoops-middleware: ^0.2.0
- illuminate/database: ^5.1
- league/container: ^2.0.3
- league/factory-muffin: ^2.1
- league/flysystem: ^1.0
- league/route: 2.0.0-RC1
- league/tactician: ^0.6.1
- madewithlove/definitions: 1.0.x@dev
- maximebf/debugbar: ^1.10
- mnapoli/assembly: ^0.2.0
- monolog/monolog: ^1.17
- oscarotero/psr7-middlewares: ^3.8
- psy/psysh: ^0.6.1
- relay/relay: ^1.0
- robmorgan/phinx: ^0.5.0
- symfony/console: ^2.8
- twig/twig: ^1.23
- vlucas/phpdotenv: ^2.1
- willdurand/negotiation: ^2.0
- zendframework/zend-diactoros: ^1.2
Requires (Dev)
- fabpot/php-cs-fixer: 2.0.x@dev
- illuminate/container: ^5.1
- mockery/mockery: ^0.9.4
- phpunit/phpunit: ^5.0.9
This package is auto-updated.
Last update: 2024-09-08 01:10:08 UTC
README
什么是 Glue?
Glue 是一种用于粘合物体或材料的粘合剂( ͡° ͜ʖ ͡°)
Glue 也是一个辅助包,旨在快速启动基于包的应用程序。在其核心中,它只是一个容器和快速 PSR7 设置,在其之上粘合了服务提供者和中间件。
这并不是一个微框架(在这一点上,它不会限制你的工作)。如果你在寻找这个,我建议使用 Silex、Slim 或其他你想要的。相反,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)。请参阅许可证文件获取更多信息。