Skip to content

Symfony DI & Events ​

Tueen Database integrates seamlessly with Symfony components, including DependencyInjection, EventDispatcher, Validator, Serializer, and Security.


🔌 Symfony DependencyInjection ​

You can compile a complete dependency injection container containing DatabaseManager, repositories, and password hashing services:

php
use Tueen\Database\Config\DatabaseConfig;
use Tueen\Database\DatabaseManager;
use Tueen\Database\DependencyInjection\ContainerFactory;

$config = DatabaseConfig::createMysql(
    dbname: 'telegram_bot',
    user: 'bot_admin',
    password: 'password',
);

$container = ContainerFactory::createContainer($config);

// Retrieve services from container
$db = $container->get(DatabaseManager::class);
$hasher = $container->get(PasswordHasherService::class);

📢 Domain Events (EventDispatcher) ​

Tueen Database dispatches Symfony contracts events across lifecycle changes:

Event ClassDispatched When
Tueen\Database\Event\ChatCreatedEventA new chat is registered via findOrCreate
Tueen\Database\Event\BalanceChangedEventFunds are credited or debited on a wallet
Tueen\Database\Event\OrderStatusChangedEventAn order is marked as paid, completed, or refunded
Tueen\Database\Event\MigrationExecutedEventSchema sync or versioned migration completes

Listening to Events ​

php
use Tueen\Database\Event\BalanceChangedEvent;

$db->getEventDispatcher()->addListener(BalanceChangedEvent::class, function (BalanceChangedEvent $event) {
    echo "Balance changed for chat {$event->chat->id} by {$event->amount} {$event->currency}!\n";
    echo "New Balance: {$event->newBalance}\n";
});

🧭 Next Steps ​

Released under the MIT License.