ציון יחסי תלות ב-PHP

משתמשים ב-Composer כדי לנהל תלויות ב-PHP.

התקנת Composer

אם Composer עדיין לא מותקן, אפשר להתקין אותו כך:

  1. מורידים את Composer לכל מיקום שרוצים.

  2. אחרי ההורדה, מעבירים את הקובץ composer.phar לספרייה שנמצאת בנתיב המערכת, לדוגמה:

    mv composer.phar /usr/local/bin/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.json לא יפעלו כש-Composer יכול להשתמש בתוצאה ששמורה במטמון.

הוספת Functions Framework כתלות

סביבת זמן הריצה של PHP ב-Cloud Run Functions מחייבת שה-Functions Framework יהיה תלות מפורשת. כדי להוסיף את Functions Framework כתלות, מריצים את הפקודה הבאה בספרייה שמכילה את קוד הפונקציה (הספרייה הזו צריכה להכיל גם את הקובץ composer.json):

composer require google/cloud-functions-framework

הפעולה הזו מוסיפה את Functions Framework ל-composer.json ומתקינה את החבילה בספרייה vendor/.

קובץ autoload.php

אחד מהקבצים שנמצאים בספרייה vendor/ הוא autoload.php.

מוסיפים את השורה הבאה לחלק העליון של סקריפטים של PHP כדי לדרוש את הקובץ autoload.php, שבאופן אוטומטי require את התלויות האחרות של הפונקציה:

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

כברירת מחדל, המערכת מתעלמת מהספרייה vendor/ בקובץ .gcloudignore שנוצר, כדי לצמצם את מספר הקבצים שנשלחים בפריסה.

עדכון יחסי תלות

כדי לעדכן את יחסי התלות של הפונקציה ואת הקובץ composer.lock, משתמשים בפקודה update:

composer update

הפעולה הזו פותרת את כל יחסי התלות של הפרויקט וכותבת את הגרסאות המדויקות שלהם לתוך composer.lock.