suvera/winter-boot

冬季靴框架

v1.0 2021-11-22 07:53 UTC

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. 安装

  1. 安装PHP 8.0(或更高版本)

  2. 为了使 异步函数 #[Async] 和 #[Scheduled] 工作,需要 swoole 扩展。

pecl install swoole

Composer

使用composer安装框架

composer require suvera/winter-boot

composer require suvera/winter-modules

完成!

3. 构建 & 部署

框架支持 Phing 构建系统

查看此文档 构建服务

4. 文档

5. 模块扩展

通过使用 https://github.com/suvera/winter-modules,此框架可以被进一步扩展

如何创建新模块

通过扩展 WinterModule 创建新模块。查看以下模块以供参考

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 {
}