datashaman / phial-project
Phial 的示例项目。
Requires
- async-aws/dynamo-db: ^0.3.1
- circli/event-dispatcher: ^2.2
- container-interop/service-provider: ^0.4.0
- datashaman/phial-handler: dev-master
- datashaman/phial-http: dev-master
- fig/http-message-util: ^1.1
- laminas/laminas-diactoros: ^2.3
- latte/latte: ^2.8
- monolog/monolog: ^2.1
- narrowspark/http-status: ^4.1
- nikic/fast-route: ^1.3
- northwoods/broker: ^3.0
- northwoods/lazy-middleware: ^2.0
- php-di/invoker: ^2.1
- php-di/php-di: ^6.2
- psr/container: ^1.0
- psr/event-dispatcher: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
- psr/log: ^1.1
- psr/simple-cache: ^1.0
Requires (Dev)
- symfony/var-dumper: ^5.1
This package is auto-updated.
Last update: 2024-09-28 03:00:16 UTC
README
phial 的示例项目。
要求
- AWS 命令行界面
- SAM 命令行界面
- AWS 凭据
说明
- 在 .settings 中定义 PHP 的版本。
- 在 Dockerfile 中添加任何系统和 PHP 软件包。PHP 模块软件包的安装方式如
yum install -y php74-php-gd
。 - 编辑 php.ini 来配置 PHP 或启用模块。
- 使用常规方法定义 composer 依赖项。
- 在 bootstrap.php 中调整引导过程以适应您的需求。
- 在 template.yaml 中设置您的 handler 函数,使其可以调用。
处理器
常规处理器的以下签名
myHandler(array $event, ContextInterface $context);
参数是可选的,您可以从容器中类型提示任何内容。
如果您正在开发一个 HTTP API,请使用 RequestHandlerAdapter
,它将请求和响应从 PSR-17 的 RequestHandlerInterface
转换到和从。
工作流程
sam build
sam deploy --guided
sam local start-api
sam local invoke
组成部分
您不必使用 DI 容器,但它确实使事情变得更容易。任何 PSR-11 实现都将适用。调用处理器代码的 PHP-DI 调用者将处理 DI 或无 DI,它不在乎。
要替换 DI 容器以使用其他实现,在 bootstrap.php 中构建一个,并将其传递给调用者构建。
支持的 PSR 标准
以下 PSR 接口得到支持;任何兼容的实现都可以使用,只需将参数传递给处理器构造函数或使用您的 DI 容器来自动装配它。
还列出了在此项目中使用的实现。这些实现配置在配置文件夹中,并通过服务提供者连接。
-
- DynamoDB - app/Caches/DynamoDbCache.php
路线图
完成
-
服务提供者 - 标准服务提供者 使用 PHP-DI 连接所需类。
在 app/Providers 文件夹中定义服务提供者,并将类添加到 config/app.php 中的
app.providers
配置中。 -
全局中间件 - Broker 处理 PSR-15 中间件管道。
在 app/Http/Middleware 文件夹中定义中间件,并将类添加到 config/http.php 中的
http.middleware
配置中。确保第一个中间件处理异常,最后一个中间件处理路由。
-
日志记录 - Monolog 将日志发送到
stderr
流,该流通过 AWS Lambda 转发到 CloudWatch。 -
数据库 - PDO 连接和查询按预期工作。函数必须在与
RDS
集群相同的VPC
中。 -
事件处理 - 通过在服务提供者中扩展
ListenerProviderInterface
来添加新的事件监听器。查看 app/Providers/EventServiceProvider.php 以获取如何添加监听器的示例。
类型提示
Psr\EventDispatcher\EventDispatcherInterface
获取分发器并根据 PSR-14 分发:$dispatcher->dispatch(new MyEvent());
-
队列 - 带有 SQS 事件源的常规事件处理器按预期工作。
-
缓存 - 在 app/Caches/DynamoDbCache.php 中的 PSR-16 DynamoDB 缓存。
类型提示是
Psr\SimpleCache\CacheInterface
。查看 template.yaml 中的 SimpleTable 定义。创建的键是
key
,缓存的值以 gzip 压缩序列化数据的形式存储在value
中,而expires_at
值存储以秒为单位的 UNIX 时间戳。
待办事项
通用
- 缓存 TTL。
- CORS。
- 表单方法欺骗。
- 验证。
- 内容协商。
- 即兴命令。
路由
- 命名路由。
- 反向路由(URL生成)。
- 路由中间件。
- 速率限制。
- 路由缓存。
- 资源控制器。
中间件
- 中间件组。
- 中间件优先级。
- 控制器中间件。
- 使用 Cognito 的身份验证中间件。
- 基本身份验证。
文件
- 上传的文件。
- 文件下载。
- 文件响应。
- 通过 S3 提供静态资源。
列表底部
- Cookie。
- CSRF 保护。
- 会话。
- 调度器。
- 迁移。
- ORM。