1. Go to this page and download the library: Download rapira/contract library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rapira / contract example snippets
namespace Rapira;
/** Throws Exception\NoDispatcherError outside Dispatcher mode. Same instance for the life of the process. */
function get_dispatcher(): Dispatcher {}
/** The mode the host launched this process in. Fixed for the life of the process. */
function get_mode(): Mode {}
/** Throws Exception\NotInWorkerModeError outside Worker mode. Serves the next SAPI request through $handler; false once the host is done. */
function handle_request(callable $handler): bool {}
/** Version of the running Rapira server. */
function get_version(): string {}
/** Queued to the host under the `app` target. Never blocks, never throws. */
function log(string $message, LogLevel $level = LogLevel::Info, array $context = []): void {}
/** No backing values; a PSR-3 bridge squashes eight levels into these five. */
enum LogLevel { case Error; case Warning; case Info; case Debug; case Trace; }
enum Mode { case Classic; case Worker; case Dispatcher; }
interface Dispatcher
{
/** Plugin identity: "grpc", "jobs", "http"... */
public function name(): string;
/**
* Never waits.
*
* @return Work|null Null means nothing available at this moment; the queue may fill again.
* @throws Exception\ClosedException No more work will ever arrive.
*/
public function tryReceive(): ?Work;
/**
* @param int<-1, max> $timeout Microseconds to wait; -1 waits indefinitely, 0 not at all.
* @throws Exception\TimeoutException No work became available within $timeout.
* @throws Exception\ClosedException No more work will ever arrive.
*/
public function receive(int $timeout = -1): Work;
/** Live plugin counters. Observability only — never a control-flow source. */
public function getInfo(): DispatcherInfo;
}
interface Work
{
public function isFinalized(): bool;
/** Is the result still wanted? False on deadline, disconnected client, lost lease. */
public function isCancelled(): bool;
}
/** Immutable snapshot: all values captured at creation, so the counters are consistent. */
interface DispatcherInfo
{
/** @return int<0, max> Units the plugin holds pending, not yet handed to any worker. */
public function pendingCount(): int;
/** @return int<0, max> Units handed to this worker and not yet finalized. */
public function activeCount(): int;
}
/** The two arms of an address: a port exists exactly when the endpoint is an IP one. Shared, since
* every plugin that names a peer names it the same way. */
final readonly class InetAddress
{
public function __construct(
public string $ip,
public int $port, // int<1, 65535> — the zero sentinel is gone with the union
) {}
}
final readonly class UnixAddress
{
public function __construct(
public ?string $path, // null: an unnamed peer, the usual case for a connecting client
) {}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.