datashaman/phial-project

Phial 的示例项目。

dev-master 2020-08-17 15:44 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-17RequestHandlerInterface 转换到和从。

工作流程

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 容器来自动装配它。

还列出了在此项目中使用的实现。这些实现配置在配置文件夹中,并通过服务提供者连接。

路线图

完成

  • 配置 - PHP-DI 将配置存储在 config 文件夹中。

  • 服务提供者 - 标准服务提供者 使用 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

  • 路由 - FastRoute 路由定义在 routes 文件夹中。

  • 模板化 - 使用 Lattetemplates 文件夹中渲染模板。

  • 数据库 - PDO 连接和查询按预期工作。函数必须在与 RDS 集群相同的 VPC 中。

    还有 AsyncAws RDS Data Service

  • 事件处理 - 通过在服务提供者中扩展 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。