timostamm/protoc-h1-php-server

PHP utilities to implement protobuf services on a simple HTTP server

v1.1.0 2023-05-08 10:41 UTC

This package is auto-updated.

Last update: 2024-04-08 15:27:35 UTC


README

build Packagist PHP Version GitHub tag License

PHP utilities to implement protobuf services on a simple HTTP server.

Supports all unary RPC calls over HTTP 1.

For auto-generated clients, see https://github.com/timostamm/protoc-h1-plugins

Lets say you have this service defined in a proto file:

option php_generic_services = true;

service SearchService {

    rpc Search (SearchRequest) returns (SearchResponse);

}

From this file, protoc generates a generic service interface SearchServiceInterface.php. You just implement this interface with your business logic.

Then you can let HttpHandler take care of request and response:

/**
 * @Route( methods={"PUT"}, path="{serviceName}/{methodName}" )
 */
public function execute(RequestInterface $request, string $serviceName, string $methodName): Response
{

    $resolver = new ServiceResolver();
    $resolver->registerInstance(
        SearchServiceInterface::class, // the interface generated by protoc 
        new SearchService() // your implementation of the interface
    );

    $handler = new HttpHandler($resolver);

    // turn on details in error messages
    $handler->setDebug(true); 

    // will log exception details, regardless of debug mode
    $handler->setLogger($myPsrLogger); 

    return $handler->handle($serviceName, $methodName, $request);
}