Specifying dependencies in PHP

You use Composer to manage dependencies in PHP.

Installing Composer

If you don't already have Composer installed, you can do so as follows:

  1. Download Composer to any location you desire.

  2. Once it is downloaded, move the composer.phar file to a directory that is in your system path, for example:

    mv composer.phar /usr/local/bin/composer
    

Creating a composer.json file

The composer.json file lists your function's dependencies. You can either create it by hand, or you can run the following command:

composer init

When you run this command, it interactively asks you to fill in the fields, while offering some smart defaults.

Declaring dependencies

To declare dependencies, add a composer.json file containing dependencies to your function code directory. In this example, we require the Functions Framework and add a start script:

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

Note that scripts defined in your composer.json file will not run when Composer can use a cached result.

Add Functions Framework as a dependency

The Cloud Functions PHP runtime requires the Functions Framework to be an explicit dependency. To add Functions Framework as a dependency, run the following command in the directory containing your function code (this directory must also contain the composer.json file):

composer require google/cloud-functions-framework

This adds the Functions Framework to your composer.json and installs the package in the vendor/ directory.

autoload.php file

One of the files contained in your vendor/ directory is autoload.php.

Add the following line to the top of your PHP scripts to require the autoload.php file, which automatically requires your function's other dependencies:

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

By default, the vendor/ directory is ignored in the generated .gcloudignore file to reduce the number of files sent in deployment.

Updating dependencies

To update your function's dependencies and the composer.lock file, use the update command:

composer update

This resolves all dependencies of the project and writes their exact versions into composer.lock.