Lambda + PHP なら bref

AWS Lambda で PHP を使いたいなら bref がかんたんですよー、というのが

[AWS] Lambda で PHP は bref が楽勝だった件
AWSのLambdaでPHPのプログラムを動かしてみました。brefというPHP用のサーバレスフレームワークを利用すれば楽勝でしたよ。
Atuweb 開発 Log

の記事でした。

今回は、 bref 作成したプロジェクトに Composer の autoload を設定します。

bref に autoload を設定する

autoload は、「決まった場所にあるファイルを自動で読み込む」という仕組みです。

autoload を活用できない場合、ファイルを一つずつ require する、という古臭くてすぐ壊れるプログラムを構築する感じになってしまいます。

そんなのはもう嫌です。


では設定を進めましょう。

修正するファイルは 3 つだけです。

composer.json

bref

1$ composer require bref/bref

とインストールすると、その時点で composer.json が作られます。

この composer.json を編集して次のように autoload の設定を追記します。

1"autoload": {
2  "psr-4": {
3    "App\\" : "src/"
4  }
5}

serverless.yml

bref の場合、 serverless.yml のハンドラ指定もそろえてあげます。

具体的には

1functions:
2  function:
3    handler: index.php

handler: index.php

1functions:
2  function:
3    handler: src/index.php

と、 autoload で指定したディレクトリを追加します。

src/index.php

もともとあった index.phpsrc/index.php に移動します。

移動後、 autoload.php を require して読み込みます。

1<?php declare(strict_types=1);
2namespace App;
3
4require __DIR__ . '/../vendor/autoload.php';
5
6lambda(function (array $event) {
7    // なにか処理
8});

という感じです。

この 3 つを設定したあとはルールに従ってクラスを追加していくだけですよ。