suvera / winter-boot
冬季靴框架
v1.0
2021-11-22 07:53 UTC
Requires
- ext-pcntl: *
- ext-posix: *
- lastguest/murmurhash: 2.1.*
- monolog/monolog: 2.3.*
- promphp/prometheus_client_php: v2.3.*
- ramsey/uuid: 4.2.*
- suvera/monolog-cascade: dev-master
- swoole/ide-helper: @dev
- symfony/yaml: 5.4.x-dev
- vanilla/garden-cli: v3.1
This package is auto-updated.
Last update: 2024-10-01 00:14:25 UTC
README
受Spring Boot启发,您可以使用PHP 8在此风格中构建 微服务。
应用
#[WinterBootApplication] class MyApplication { public static function main() { (new WinterWebSwooleApplication())->run(MyApplication::class); } } MyApplication::main();
此框架使已经了解Spring Boot并希望跳入PHP8的人受益。
- 依赖注入由框架通过PHP8属性(注解)管理
示例服务
#[Service] class UserServiceImpl implements UserService { #[Autowired] private PdbcTemplate $pdbc; public function createUser(string $name, string $email) { $this->pdbc->update(/* ... */); } } -------------------------------------------------------------------- #[RestController] class MyController { #[Autowired] private UserService $userService; #[RequestMapping(path: "/api/v2/users", method: [RequestMethod::POST]] public function createUser( #[RequestParam] string $name, #[RequestParam] string $email ): ResponseEntity { $this->userService->createUser($name, $email); return ResponseEntity::ok()->withJson($someJsonArray); } } # curl command curl "https:///api/v2/users" -d "name=Abc&email=mail"
1. 示例微服务
在此处查看示例应用程序 example-service
2. 安装
-
安装PHP 8.0(或更高版本)
-
为了使 异步函数 #[Async] 和 #[Scheduled] 工作,需要
swoole
扩展。
pecl install swoole
Composer
使用composer安装框架
composer require suvera/winter-boot composer require suvera/winter-modules
完成!
3. 构建 & 部署
框架支持 Phing 构建系统
查看此文档 构建服务
- 构建phar文件
- 构建Docker镜像 - 查看 example-service
4. 文档
- Stereotypes & Dependency Injection
- 配置
- 日志
- 应用程序启动/引导
- REST API开发
- 缓存
- 自定义Stereotypes & 面向切面魔法
- 数据库 & 事务
- Actuator
- 锁定
- Json和XML
- 异步和调度支持
- 共享内存存储
- 守护线程
- 构建 & 部署
5. 模块扩展
通过使用 https://github.com/suvera/winter-modules,此框架可以被进一步扩展
如何创建新模块
通过扩展 WinterModule 创建新模块。查看以下模块以供参考
- Doctrine ORM/DBAL模块
- Redis模块
- Apache Kafka模块
- DTCE模块
- S3模块
- Memdb模块 - 集成内存数据库,如Apache Ignite、Redis、Memcached、Hazelcast等...
- 服务发现 - Consul、Netflix Eureka等...
6. 常见问题解答
1. 如何在我的项目中使用其他框架组件?
是的,可以使用composer安装任何来自任何php框架的组件。Symfony、YII2、Laravel、Code Igniter等...
示例
# Symfony Security component composer require symfony/security # Laravel illuminate events component composer require illuminate/events # Yii Arrays Component composer require yiisoft/arrays --prefer-dist
请确保组件与PHP8兼容。
2. 我可以在我的项目中使用RoadRunner或Workerman吗?
是的,您可以通过扩展框架来创建核心应用程序运行器类。
目前,Swoole是这样做。
class WinterWebSwooleApplication extends WinterApplicationRunner implements WinterApplication { }
同样,您也可以扩展框架。
class WinterWebWorkermanApplication extends WinterApplicationRunner implements WinterApplication { } class WinterRoadRunnerApplication extends WinterApplicationRunner implements WinterApplication { }