*/ public readonly array $data; /** * Builds a result. * * @param bool $ok Success. * @param string $code Machine-readable code. * @param string $message Plain-language message. * @param array $data Extra details. */ private function __construct( bool $ok, string $code, string $message, array $data ) { $this->ok = $ok; $this->code = $code; $this->message = $message; $this->data = $data; } /** * Success. * * @param string $message Plain-language message. * @param array $data Extra details. */ public static function success( string $message = '', array $data = array() ): self { return new self( true, 'ok', $message, $data ); } /** * Failure. * * @param string $code Machine-readable code. * @param string $message Plain-language message. * @param array $data Extra details. */ public static function failure( string $code, string $message, array $data = array() ): self { return new self( false, $code, $message, $data ); } }