Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

julianov's avatar

JSON response and Services

Hello.

If I do a

          $response = $this->wsService->checkUserCuil($dni);
           dd($response->getActor());
            return response()->json([
                    'status' => $response->getStatus(),
                    'actor' => $response->getActor(),
            ], 201);

I get:

App\Services\WebServices\WsER\Contracts\ActorResponse {#375 // 
app/Http/Controllers/UserController.php:67
  -PrsId: 447014
  -Name: "xxxxxx"
  -Last_name": "xxxxxx"
}

But If I make a json response like this:

          $response = $this->wsService->CheckUserResponse($dni);
            return response()->json([
                    'status' => $response->getStatus(),
                    'actor' => $response->getActor(),
            ], 201);

I get an empty data:

   {"status":true,"actor":{}}

This is the CheckUserResponse.php

<?php

namespace App\Services\WebServices\WsEntreRios\Contracts;

class CheckUserResponse {
	private readonly bool $status;
	private readonly ActorResponse $actor;

	public function __construct(bool $status,ActorResponse $actor) {
		$this->status = $status;
		$this->actor = $actor;
	}

	public function getStatus(): bool {
		return $this->status;
	}


	public function getActor(): ActorResponse {
		return $this->actor;
	}
}

This is the ActorResponse file

<?php

namespace App\Services\WebServices\WsER\Contracts;

class ActorResponse
{
	private int $PrsId;
	
	private string $name;
	private string $last_name;
	

	public function __construct(array $payload)
	{
		$this->PrsId = $payload["PRS_ID"];
		$this->name = $payload["NAME"];
		$this->last_name = $payload["LAST_NAME"];
		
	}

	public function getPrsId(): int {
		return $this->PrsId;
	}
	
	public function getLastName(): string {
		return $this->lasta_name;
	}
	public function getNames(): string {
		return $this->name;
	}

	public function getFullName(): string
	{
		return $this->last_name . ", " . $this->name;
	}

	public function getEntId(): int {
		return $this->EntId;
	}

}
0 likes
5 replies
julianov's avatar

@vincent15000 Thanks

I get:

Error: Call to undefined method App\Services\WebServices\WsER\Contracts\ActorResponse::toArray()
1 like
vincent15000's avatar

@julianov Oh I though that getActor() returned a model, so effectively there is no toArray() method. In that case you have to map through each value in the ActorResponse.

What do you obtain with that ?

dd(collect($response->getActor()));
julianov's avatar

@vincent15000

dd(collect($response->getActor())) return

  Illuminate\Support\Collection {#372 // app/Http/Controllers/UserController.php:67
  #items: array:7 [
    "\x00App\Services\WebServices\WsER\Contracts\ActorResponse\x00Id" => 447014
    "\x00App\Services\WebServices\WsER\Contracts\ActorResponse\x00Last_name" => "XXX"
    "\x00App\Services\WebServices\WsER\Contracts\ActorResponse\x00Name" => "XXXXX"
     ]
  #escapeWhenCastingToString: false
}
1 like
vincent15000's avatar
Level 63

@julianov And this ?

dd($response->getActor()['PrsId']);
// or
dd($response->getActor()['Name']);
1 like

Please or to participate in this conversation.