getstream / getstream-php
PHP SDK for GetStream API
Installs: 334
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/getstream/getstream-php
Requires
- php: ^8.1
- ext-curl: *
- ext-json: *
- firebase/php-jwt: ^6.0
- guzzlehttp/guzzle: ^7.0
- vlucas/phpdotenv: ^5.0
Requires (Dev)
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^10.0
- squizlabs/php_codesniffer: ^3.7
- dev-master
- v2.1.0
- v2.0.2
- v2.0.0
- v1.0.0
- v0.0.3
- v0.0.2
- v0.0.1
- dev-release-2.1.0
- dev-FEEDS-852
- dev-release-2.0.2
- dev-FEEDS-863
- dev-release-2.0.0
- dev-package
- dev-release-v1.0.0
- dev-sdk-update
- dev-version-bug
- dev-release-v0.0.3
- dev-object_serial
- dev-date_bug
- dev-moderation
- dev-release-v0.0.2
- dev-release-v0.0.1
This package is not auto-updated.
Last update: 2025-12-23 16:12:05 UTC
README
A PHP SDK for the GetStream API.
Installation
Install via Composer:
composer require getstream/getstream-php
Configuration
Copy .env.example to .env and configure:
cp .env.example .env
Required environment variables:
STREAM_API_KEY=your_api_key_here STREAM_API_SECRET=your_api_secret_here STREAM_BASE_URL=https://chat.stream-io-api.com
Code Generation
Generate API methods from OpenAPI spec:
./generate.sh
Testing
Run tests:
# Run all tests make test # Run unit tests only make test-unit # Run integration tests (requires API credentials) make test-integration
Usage
Basic Setup
<?php require_once 'vendor/autoload.php'; use GetStream\ClientBuilder; $client = ClientBuilder::fromEnv()->build(); $feed = $client->feed('user', 'john-doe');
Working with Activities
use GetStream\GeneratedModels\AddActivityRequest; // Create an activity $activity = new AddActivityRequest( actor: 'user:john', verb: 'post', object: 'message:123', text: 'Hello World!' ); $response = $client->addActivity($activity); // Access response data directly $createdActivity = $response->activity; echo "Activity ID: " . $createdActivity->id; // Or access HTTP metadata echo "Status: " . $response->getStatusCode(); echo "Duration: " . $response->duration;
Models
Automatic JSON Parsing
Generated models automatically handle JSON parsing and serialization:
// Models parse JSON based on constructor types $response = $client->addActivity($request); $activity = $response->activity; // Fully typed object
Custom JSON Key Mapping
Override field names using the JsonKey attribute:
use GetStream\GeneratedModels\JsonKey; class CustomModel extends BaseModel { public function __construct( #[JsonKey('fids')] public ?array $feedIds = null, // Maps to "fids" instead of "feed_ids" ) {} }
Response Access
$response = $client->addActivity($request); // Direct access $activity = $response->activity; // HTTP metadata $statusCode = $response->getStatusCode(); $duration = $response->duration;
Code Generation
Generate models and clients from OpenAPI spec:
./generate.sh
This creates clean, typed models with automatic JSON handling - no boilerplate code needed.
Development
Linting and Code Quality
# Run all available linting checks make lint # Run PHPStan static analysis only make phpstan # Fix code style issues (requires php-cs-fixer) make cs-fix # Run comprehensive quality checks (lint + tests) make quality
Testing
# Run all tests make test # Run unit tests only make test-unit # Run integration tests make test-integration