. */ namespace SP\Http; use JsonSerializable; use stdClass; /** * Class Json para definir la estructura de una respuesta en formato JSON * * @package SP\Http */ final class JsonResponse implements JsonSerializable { const JSON_SUCCESS = 0; const JSON_SUCCESS_STICKY = 100; const JSON_ERROR = 1; const JSON_ERROR_STICKY = 101; const JSON_WARNING = 2; const JSON_WARNING_STICKY = 102; const JSON_LOGOUT = 10; /** * @var int */ protected $status = 1; /** * @var string */ protected $description = ''; /** * @var string */ protected $action = ''; /** * @var array */ protected $data = []; /** * @var array */ protected $messages = []; /** * @var string */ protected $container = ''; /** * @var string */ protected $csrf = ''; /** * JsonResponse constructor. * * @param string|null $description */ public function __construct(?string $description = null) { $this->description = $description; } /** * @return int */ public function getStatus(): int { return $this->status; } /** * @param int $status * * @return JsonResponse */ public function setStatus(int $status): JsonResponse { $this->status = (int)$status; return $this; } /** * @return string */ public function getDescription(): ?string { return $this->description; } /** * @param string $description * * @return JsonResponse */ public function setDescription(string $description): JsonResponse { $this->description = __($description); return $this; } /** * @return string */ public function getAction(): string { return $this->action; } /** * @param string $action * * @return JsonResponse */ public function setAction(string $action): JsonResponse { $this->action = $action; return $this; } /** * @return array */ public function getData(): array { return $this->data; } /** * @param array|stdClass $data * * @return JsonResponse */ public function setData($data): JsonResponse { $this->data = $data; return $this; } /** * @return array */ public function getMessages(): array { return $this->messages; } /** * @param array $messages * * @return JsonResponse */ public function setMessages(array $messages): JsonResponse { $this->messages = array_map('__', $messages); return $this; } /** * @return string */ public function getContainer(): string { return $this->container; } /** * @param string $container * * @return JsonResponse */ public function setContainer(string $container): JsonResponse { $this->container = $container; return $this; } /** * @return string */ public function getCsrf(): string { return $this->csrf; } /** * @param string $csrf * * @return JsonResponse */ public function setCsrf(string $csrf): JsonResponse { $this->csrf = $csrf; return $this; } /** * @param string $message * * @return JsonResponse */ public function addMessage(string $message): JsonResponse { $this->messages[] = __($message); return $this; } /** * @param mixed $param * * @return $this */ public function addParam($param): JsonResponse { if (is_numeric($param)) { $param = (int)$param; } $this->data[] = $param; return $this; } /** * Specify data which should be serialized to JSON * * @link http://php.net/manual/en/jsonserializable.jsonserialize.php * @return mixed data which can be serialized by json_encode, * which is a value of any type other than a resource. * @since 5.4.0 */ public function jsonSerialize() { return $this->getJsonArray(); } /** * Devolver un array con las propiedades del objeto * * @return array */ public function getJsonArray(): array { $out = []; foreach ($this as $key => $value) { $out[$key] = $value; } return $out; } /** * Establecer los valores por defecto * * @return JsonResponse */ public function clear(): JsonResponse { $this->status = 0; $this->action = ''; $this->data = []; $this->messages = []; $this->container = ''; $this->csrf = ''; return $this; } }