Carbon object 在什么时候变成 Laravel 中的字符串?
At what point does a Carbon object turn to string in Laravel?
想用 Laravel 编写类似于 Carbon 日期的转换,我意识到 Carbon 日期在传递给 front-end 或 blade 组件时会转换为字符串。
我一直在挖掘源代码,但没有成功,有人知道这是如何工作的吗?
我的理解是 __toString() 方法在碳 object 上的某个时刻被调用,但不知道在哪里。
一个例子是:
$user = User::first();
// here created_at is a Carbon instance
return response()->with(['created_at' => $user->created_at]);
//once this is on blade created_at is a string
所以经过更多的挖掘发现 json_encode() 对此负责。
因此,如果您 json_encode 一个碳对象,输出是一个字符串。在 laravel 的 ResponseFactory 中将响应转换为 JSON。
如果您想通过响应传递一个 PHP 对象,并且只想接收一个字符串而不是一个对象,您可以使用 JsonSerializable
class MyClass implements JsonSerializable
{
public function jsonSerialize(): string
{
return 'something';
}
}
$class = new MyClass()
json_encode($class) // "'something'"
希望这对以后的人有所帮助
想用 Laravel 编写类似于 Carbon 日期的转换,我意识到 Carbon 日期在传递给 front-end 或 blade 组件时会转换为字符串。
我一直在挖掘源代码,但没有成功,有人知道这是如何工作的吗?
我的理解是 __toString() 方法在碳 object 上的某个时刻被调用,但不知道在哪里。
一个例子是:
$user = User::first();
// here created_at is a Carbon instance
return response()->with(['created_at' => $user->created_at]);
//once this is on blade created_at is a string
所以经过更多的挖掘发现 json_encode() 对此负责。
因此,如果您 json_encode 一个碳对象,输出是一个字符串。在 laravel 的 ResponseFactory 中将响应转换为 JSON。
如果您想通过响应传递一个 PHP 对象,并且只想接收一个字符串而不是一个对象,您可以使用 JsonSerializable
class MyClass implements JsonSerializable
{
public function jsonSerialize(): string
{
return 'something';
}
}
$class = new MyClass()
json_encode($class) // "'something'"
希望这对以后的人有所帮助