【发布时间】:2023-04-01 23:20:01
【问题描述】:
我正在创建一个这样的自定义类:
<?php namespace App\Models\NonDbModels;
class BaseNonDbModel
{
public function __construct($values)
{
foreach ($values as $key => $value)
{
if (property_exists($this, $key)) {
$this->$key = $value;
}
}
}
public function toArray()
{
return get_object_vars($this);
}
public function toJson()
{
return json_encode($this->toArray());
}
public function __toString() : string
{
return $this->toJson();
}
}
在控制器中,我会将对象返回给这样的请求
$object = new BaseNonDbModel();
return $object;
它将正确返回一个 json 字符串,但返回类型将是 HTML。但如果它是 Eloquent 模型,响应类型将是 application/json。我如何模仿 Eloquent 模型的行为,我尝试阅读 Eloquent 代码,但似乎他们没有做任何不同的事情,是否在 Laravel 核心中识别 Eloquent 并将响应类型更改为 application/json ?
我知道我可以回来
return Response::json($object)
或者可能为所有请求创建一个强制 application/json 类型的中间件,但这不是我所追求的,我更喜欢像 Eloquent 模型一样舒适地返回 $object。
谢谢!
【问题讨论】:
标签: laravel