weavephp / weave
Weave glue-framework 核心库
Requires
- php: ^8.0 | ^8.1 | ^8.2
- psr/http-message: ~1.0
- psr/log: ~1.0
- weavephp/adaptor-middleware: ^0.0.4
Requires (Dev)
- phan/phan: ^5.0
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.0
README
想象一下,你7岁的时候,和几个朋友放学后一起玩。你有一个装满了各种玩偶和道具的大箱子,无限的想象力。你想扮演超级英雄?这里有相应的道具。电影明星?还是狂野西部?或者奥克和精灵的奇幻世界?所有的东西都在这个玩偶箱里。所有的上衣、裤子、裙子、鞋子、帽子、泡沫剑、塑料激光枪和闪亮的护身符,你想要的,都能让你的创作栩栩如生。
在PHP的世界里,Packagist里面装满了代码中的泡沫剑和帽子——有无数种组合。但如果你试图组装一组知名的包,例如微框架中间件栈,仍然需要大量的工作来将这些部分粘合在一起。所以,为了节省别人的精力,有一些成套的派对服装包,你可以直接从货架上拿走。所有你需要的东西来实现太空海盗的外观。
但如果你想成为一个拿着泡沫剑和大帽子、而不是别人决定你想要、带着塑料激光枪和透明塑料太空头盔的太空海盗呢?不幸的是,在代码中,这往往不像和你的好朋友交换剑那么简单。
当涉及到PHP框架时,如果能够自由地从服装箱中挑选你想要的部件,但不需要手动将它们全部连接起来,那就太好了。
欢迎来到Weave。
微框架的解剖学
无论你查看哪个微框架,它们都有相同的基本组件(多多少少)
- 配置
- 错误处理器
- 依赖注入控制器
- 中间件栈
- 路由器
- 解析/分发
在这种情况下,你预计会编写你的秘密酷炫的额外组件作为中间件组件、控制器等,并按照你想要的方式挂载到框架中。在这种情况下,你没有多少选择权来决定你将使用上述哪些组件。一些微框架试图做一些选择,例如Zend Expressive,但选择有限。
但看看Packagist,你会找到大量的不同的DIC、中间件栈、路由器等,并且有很多创新。
这就是Weave与它们不同的地方。Weave并没有捆绑大多数列出的组件。相反,你可以选择适配器——或者编写你自己的。无论哪种最适合你。
自己选择
Weave为其需要的不同组件提供了适配器。你提供每个适配器中的一个(或你自己的代码)来创建你想要的微框架。
在接口被使用的情况下,你只需将它们映射到你的DIC中的具体类。
查看http://github.com/weavephp 上的示例,了解这是如何实际工作的。