Skip to content

Commit 284297d

Browse files
author
Admin
committed
Implement Jsonable to BaseModelFrozenAttributes
1 parent afc7ee1 commit 284297d

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/Models/Attributes/BaseModelFrozenAttributes.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,27 @@
22

33
namespace MacropaySolutions\LaravelCrudWizard\Models\Attributes;
44

5+
use Illuminate\Contracts\Support\Jsonable;
56
use MacropaySolutions\LaravelCrudWizard\Models\BaseModel;
67

78
/**
89
* For properties autocompletion declare in the children classes (with @ property) all the model's parameters (columns)
910
*
1011
* To avoid declaring them twice, put @ mixin ChildBaseModelFrozenAttributes in ChildBaseModelAttributes
1112
*/
12-
class BaseModelFrozenAttributes implements \Stringable
13+
class BaseModelFrozenAttributes implements \Stringable, Jsonable
1314
{
1415
protected \stdClass $mirror;
1516
protected array $columns;
17+
protected bool $escapeWhenCastingToString;
1618
protected bool $returnNullOnInvalidColumnAttributeAccess;
1719

1820
public function __construct(BaseModel $ownerBaseModel) {
1921
$this->mirror = (object)\json_decode(\json_encode($ownerBaseModel->attributesToArray()));
2022
$this->columns = $ownerBaseModel->getColumns();
2123
$this->returnNullOnInvalidColumnAttributeAccess =
2224
$ownerBaseModel->shouldReturnNullOnInvalidColumnAttributeAccess();
25+
$this->escapeWhenCastingToString = $ownerBaseModel->escapeWhenCastingToString;
2326
}
2427

2528
/**
@@ -68,6 +71,11 @@ public function __isset(string $key): bool
6871

6972
public function __toString(): string
7073
{
71-
return (string)\json_encode($this->mirror);
74+
return $this->escapeWhenCastingToString ? \e($this->toJson()) : $this->toJson();
75+
}
76+
77+
public function toJson($options = 0): string
78+
{
79+
return (string)\json_encode($this->mirror, $options);
7280
}
7381
}

0 commit comments

Comments
 (0)