Skip to content

Extending Core

Custom adapters, repositories, entries, and field types via config bindings.

Extend Core by binding custom classes in stream JSON or Laravel service providers.

Custom field types

Register in config/streams/core.php:

'field_types' => [
    'rating' => \App\Streams\Fields\RatingFieldType::class,
],

Implement a field type class extending Core's field type base with assignment, validation, and optional decorators.

Custom repository

{
    "config": {
        "repository": "App\\Streams\\PostRepository"
    }
}

Implement Streams\Core\Repository\Contract\RepositoryInterface or extend Repository.

Custom entry class

{
    "config": {
        "abstract": "App\\Streams\\PostEntry"
    }
}

Subclass Streams\Core\Entry\Entry for domain methods on entries.

Custom adapter

{
    "config": {
        "adapter": "App\\Streams\\Adapters\\ApiAdapter"
    }
}

Adapters implement criteria execution for your storage backend.

Custom criteria class

{
    "config": {
        "criteria": "App\\Streams\\PostCriteria"
    }
}

Service provider bindings

Use Laravel's container in AppServiceProvider for cross-cutting bindings:

$this->app->bind(CustomInterface::class, CustomImplementation::class);

Related