Phase 1 sub-commit 2: Symfony bundle internals
All checks were successful
CI / Quality (push) Successful in 4s
All checks were successful
CI / Quality (push) Successful in 4s
Bundle code for php-qml/bridge: BridgeBundle (AbstractBundle, autoloads config/services.yaml), Publisher (thin wrapper over Mercure HubInterface that enforces envelope-as-JSON), SessionAuthenticator (bearer-token custom Symfony authenticator with problem+json failures), and HealthController (GET /healthz readiness probe). Composer constraints bumped to Symfony ^8.0 across the board (per user request); mercure component to ^0.7. PHPUnit 11 suite covers Publisher publish + private flag and SessionAuthenticator support/auth/failure paths — 8 tests, 22 assertions, all green. PLAN.md §13 updated to record the Symfony 8 minimum. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
35
framework/php/src/Publisher.php
Normal file
35
framework/php/src/Publisher.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace PhpQml\Bridge;
|
||||
|
||||
use Symfony\Component\Mercure\HubInterface;
|
||||
use Symfony\Component\Mercure\Update;
|
||||
|
||||
/**
|
||||
* Publishes envelopes onto the bridge's Mercure hub.
|
||||
*
|
||||
* Topic conventions and envelope shape are defined in PLAN.md §4.
|
||||
* Reactive-model-aware helpers (publishModelUpdate, etc.) arrive with
|
||||
* the model layer in Phase 2.
|
||||
*/
|
||||
final readonly class Publisher
|
||||
{
|
||||
public function __construct(
|
||||
private HubInterface $hub,
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $envelope
|
||||
*/
|
||||
public function publish(string $topic, array $envelope, bool $private = false): string
|
||||
{
|
||||
return $this->hub->publish(new Update(
|
||||
$topic,
|
||||
json_encode($envelope, JSON_THROW_ON_ERROR),
|
||||
$private,
|
||||
));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user