ציון יחסי תלות ב-PHP
משתמשים ב-Composer כדי לנהל תלויות ב-PHP.
התקנת Composer
אם Composer עדיין לא מותקן, אפשר להתקין אותו כך:
מורידים את Composer לכל מיקום שרוצים.
אחרי ההורדה, מעבירים את הקובץ
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.