PHP での依存関係を指定する

PHP では、Composer を使用して依存関係を管理します。Cloud Shell を使用している場合、Composer がプリインストールされています。インストールされていない場合は、Composer のインストール手順に沿ってインストールしてください。

composer.json ファイルの作成

composer.json ファイルには、関数の依存関係が列挙されます。このファイルは、手動で作成するか、次のコマンドを実行して作成します。

composer init

このコマンドを実行すると、フィールドの値を対話形式で入力するよう求められます。一部のフィールドでは適切なデフォルト値が提示されます。

依存関係を宣言する

依存関係を宣言するには、依存関係を含む composer.json ファイルを関数コードのディレクトリに追加します。この例では、Functions Framework を必須とし、start スクリプトを追加しています。

{
    "require": {
        "php": ">= 8.1",
        "google/cloud-functions-framework": "^1.1"
    },
    "scripts": {
        "start": [
           "Composer\\Config::disableProcessTimeout",
           "FUNCTION_TARGET=helloHttp php -S localhost:${PORT:-8080} vendor/google/cloud-functions-framework/router.php"
        ]
    }
}

なお、Composer がキャッシュに保存された結果を使用できる場合、composer.json ファイルに定義したスクリプトは実行されません。

Functions Framework を依存関係として追加する

Cloud Run functions の PHP ランタイムには、Functions Framework が明示的な依存関係として必要です。Functions Framework を依存関係として追加するには、関数コードが含まれるディレクトリで次のコマンドを実行します(このディレクトリには composer.json ファイルも含まれている必要があります)。

composer require google/cloud-functions-framework

これにより、Functions Framework が composer.json に追加され、パッケージが vendor/ ディレクトリにインストールされます。

autoload.php ファイル

autoload.php は、vendor/ ディレクトリに含まれるファイルの 1 つです。

PHP スクリプトの先頭に次の行を追加して autoload.php ファイルを require すると、関数の他の依存関係が自動的に require されます。

require_once __DIR__ . '/vendor/autoload.php';

デフォルトでは、デプロイ時に送信されるファイル数を減らすために、生成される .gcloudignore ファイル内で vendor/ ディレクトリは無視されます。

依存関係の更新

関数の依存関係と composer.lock ファイルを更新するには、update コマンドを使用します。

composer update

これにより、プロジェクトのすべての依存関係が解決され、正確なバージョンが composer.lock に書き込まれます。