Skip to content

Commit 0bb15db

Browse files
committed
refactor(model): Extend PageAsset, VanityUrl, and ViewAs classes from AbstractModel
Update PageAsset, VanityUrl, and ViewAs classes to inherit from AbstractModel. Add support for additional properties in constructors and enhance jsonSerialize method to include these properties in the serialized output.
1 parent 93fa386 commit 0bb15db

3 files changed

Lines changed: 39 additions & 21 deletions

File tree

src/Model/PageAsset.php

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Dotcms\PhpSdk\Model\Container\ContainerPage;
88
use Dotcms\PhpSdk\Model\Layout\Layout;
99

10-
class PageAsset implements \JsonSerializable
10+
class PageAsset extends AbstractModel
1111
{
1212
/**
1313
* @param Layout $layout Page layout structure
@@ -17,6 +17,7 @@ class PageAsset implements \JsonSerializable
1717
* @param Site $site Site information
1818
* @param Contentlet|null $urlContentMap Content map for generated pages
1919
* @param ViewAs $viewAs Visitor context
20+
* @param array<string, mixed> $additionalProperties Additional properties
2021
*/
2122
public function __construct(
2223
public readonly Layout $layout,
@@ -26,7 +27,9 @@ public function __construct(
2627
public readonly Site $site,
2728
public readonly ?Contentlet $urlContentMap,
2829
public readonly ViewAs $viewAs,
30+
array $additionalProperties = [],
2931
) {
32+
$this->setAdditionalProperties($additionalProperties);
3033
}
3134

3235
/**
@@ -36,14 +39,17 @@ public function __construct(
3639
*/
3740
public function jsonSerialize(): array
3841
{
39-
return [
40-
'layout' => $this->layout,
41-
'template' => $this->template,
42-
'page' => $this->page,
43-
'containers' => $this->containers,
44-
'site' => $this->site,
45-
'urlContentMap' => $this->urlContentMap,
46-
'viewAs' => $this->viewAs,
47-
];
42+
return array_merge(
43+
[
44+
'layout' => $this->layout,
45+
'template' => $this->template,
46+
'page' => $this->page,
47+
'containers' => $this->containers,
48+
'site' => $this->site,
49+
'urlContentMap' => $this->urlContentMap,
50+
'viewAs' => $this->viewAs,
51+
],
52+
$this->getAdditionalProperties()
53+
);
4854
}
4955
}

src/Model/VanityUrl.php

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,19 @@
44

55
namespace Dotcms\PhpSdk\Model;
66

7-
class VanityUrl implements \JsonSerializable
7+
class VanityUrl extends AbstractModel
88
{
99
/**
1010
* @param string $url The vanity URL
1111
* @param string $forwardTo The URL to forward to
12+
* @param array<string, mixed> $additionalProperties Additional properties
1213
*/
1314
public function __construct(
1415
public readonly string $url,
1516
public readonly string $forwardTo,
17+
array $additionalProperties = [],
1618
) {
19+
$this->setAdditionalProperties($additionalProperties);
1720
}
1821

1922
/**
@@ -23,9 +26,12 @@ public function __construct(
2326
*/
2427
public function jsonSerialize(): array
2528
{
26-
return [
27-
'url' => $this->url,
28-
'forwardTo' => $this->forwardTo,
29-
];
29+
return array_merge(
30+
[
31+
'url' => $this->url,
32+
'forwardTo' => $this->forwardTo,
33+
],
34+
$this->getAdditionalProperties()
35+
);
3036
}
3137
}

src/Model/ViewAs.php

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,21 @@
66

77
use Dotcms\PhpSdk\Model\ViewAs\Visitor;
88

9-
class ViewAs implements \JsonSerializable
9+
class ViewAs extends AbstractModel
1010
{
1111
/**
1212
* @param Visitor $visitor Visitor context information
1313
* @param array<string, mixed> $language Language details
1414
* @param string $mode The view mode (LIVE, PREVIEW, EDIT_MODE)
15+
* @param array<string, mixed> $additionalProperties Additional properties
1516
*/
1617
public function __construct(
1718
public readonly Visitor $visitor,
1819
public readonly array $language,
1920
public readonly string $mode,
21+
array $additionalProperties = [],
2022
) {
23+
$this->setAdditionalProperties($additionalProperties);
2124
}
2225

2326
/**
@@ -27,10 +30,13 @@ public function __construct(
2730
*/
2831
public function jsonSerialize(): array
2932
{
30-
return [
31-
'visitor' => $this->visitor,
32-
'language' => $this->language,
33-
'mode' => $this->mode,
34-
];
33+
return array_merge(
34+
[
35+
'visitor' => $this->visitor,
36+
'language' => $this->language,
37+
'mode' => $this->mode,
38+
],
39+
$this->getAdditionalProperties()
40+
);
3541
}
3642
}

0 commit comments

Comments
 (0)