From 27aeb5ae46142f06797e3aa2a6c422cdd37a43fe Mon Sep 17 00:00:00 2001 From: Giuseppe Criscione <18699708+giuscris@users.noreply.github.com> Date: Fri, 11 Nov 2022 23:21:45 +0100 Subject: [PATCH 1/2] Make `final` the classes `DataGetter` and `DataSetter` --- formwork/src/Data/DataGetter.php | 2 +- formwork/src/Data/DataSetter.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/formwork/src/Data/DataGetter.php b/formwork/src/Data/DataGetter.php index 8eda999cb..8b346526b 100644 --- a/formwork/src/Data/DataGetter.php +++ b/formwork/src/Data/DataGetter.php @@ -6,7 +6,7 @@ use Formwork\Data\Traits\DataArrayable; use Formwork\Data\Traits\DataMultipleGetter; -class DataGetter implements Arrayable +final class DataGetter implements Arrayable { use DataArrayable; use DataMultipleGetter; diff --git a/formwork/src/Data/DataSetter.php b/formwork/src/Data/DataSetter.php index f832178e6..d3b440665 100644 --- a/formwork/src/Data/DataSetter.php +++ b/formwork/src/Data/DataSetter.php @@ -4,7 +4,7 @@ use Formwork\Data\Traits\DataMultipleSetter; -class DataSetter extends DataGetter +final class DataSetter extends DataGetter { use DataMultipleSetter; } From e60fc89cf575b3187298fb34c9b6512b8110e2b8 Mon Sep 17 00:00:00 2001 From: Giuseppe Criscione <18699708+giuscris@users.noreply.github.com> Date: Fri, 11 Nov 2022 23:23:25 +0100 Subject: [PATCH 2/2] Fix classes extending `DataGetter` and `DataSetter` --- .../src/Admin/Controllers/OptionsController.php | 2 +- formwork/src/Config.php | 13 +++++++++++-- formwork/src/Fields/Field.php | 12 ++++++++++-- formwork/src/Router/RouteParams.php | 10 ++++++++-- formwork/src/Schemes/Scheme.php | 13 +++++++++---- 5 files changed, 39 insertions(+), 11 deletions(-) diff --git a/formwork/src/Admin/Controllers/OptionsController.php b/formwork/src/Admin/Controllers/OptionsController.php index b9dc8cff3..392837cd3 100644 --- a/formwork/src/Admin/Controllers/OptionsController.php +++ b/formwork/src/Admin/Controllers/OptionsController.php @@ -55,7 +55,7 @@ public function systemOptions(): Response return $this->admin()->redirect('/options/system/'); } - $fields->validate(Formwork::instance()->config()); + $fields->validate(new DataGetter(Formwork::instance()->config()->toArray())); $this->modal('changes'); diff --git a/formwork/src/Config.php b/formwork/src/Config.php index ded728035..2368a3cb5 100644 --- a/formwork/src/Config.php +++ b/formwork/src/Config.php @@ -2,8 +2,17 @@ namespace Formwork; -use Formwork\Data\DataGetter; +use Formwork\Data\Contracts\Arrayable; +use Formwork\Data\Traits\DataArrayable; +use Formwork\Data\Traits\DataGetter; -class Config extends DataGetter +class Config implements Arrayable { + use DataArrayable; + use DataGetter; + + public function __construct(array $data) + { + $this->data = $data; + } } diff --git a/formwork/src/Fields/Field.php b/formwork/src/Fields/Field.php index eece1325c..65c5d7097 100644 --- a/formwork/src/Fields/Field.php +++ b/formwork/src/Fields/Field.php @@ -2,11 +2,19 @@ namespace Formwork\Fields; +use Formwork\Data\Contracts\Arrayable; +use Formwork\Data\Traits\DataArrayable; +use Formwork\Data\Traits\DataMultipleGetter; +use Formwork\Data\Traits\DataMultipleSetter; use Formwork\Utils\Constraint; use UnexpectedValueException; -class Field extends DataSetter +class Field implements Arrayable { + use DataArrayable; + use DataMultipleGetter; + use DataMultipleSetter; + /** * Field name */ @@ -18,7 +26,7 @@ class Field extends DataSetter public function __construct(string $name, array $data = []) { $this->name = $name; - parent::__construct($data); + $this->data = $data; if ($this->has('import')) { $this->importData(); } diff --git a/formwork/src/Router/RouteParams.php b/formwork/src/Router/RouteParams.php index 36f92c66e..042d36d6f 100644 --- a/formwork/src/Router/RouteParams.php +++ b/formwork/src/Router/RouteParams.php @@ -2,8 +2,14 @@ namespace Formwork\Router; -use Formwork\Data\DataGetter; +use Formwork\Data\Traits\DataGetter; -class RouteParams extends DataGetter +class RouteParams { + use DataGetter; + + public function __construct(array $data) + { + $this->data = $data; + } } diff --git a/formwork/src/Schemes/Scheme.php b/formwork/src/Schemes/Scheme.php index 38266d5f9..20601c704 100644 --- a/formwork/src/Schemes/Scheme.php +++ b/formwork/src/Schemes/Scheme.php @@ -2,13 +2,18 @@ namespace Formwork\Schemes; -use Formwork\Data\DataGetter; +use Formwork\Data\Contracts\Arrayable; +use Formwork\Data\Traits\DataArrayable; +use Formwork\Data\Traits\DataGetter; use Formwork\Formwork; use Formwork\Parsers\YAML; use Formwork\Utils\FileSystem; -class Scheme extends DataGetter +class Scheme implements Arrayable { + use DataArrayable; + use DataGetter; + /** * Scheme type */ @@ -33,11 +38,11 @@ public function __construct(string $type, string $path) $this->path = $path; $this->name = FileSystem::name($path); - parent::__construct(YAML::parseFile($this->path)); + $this->data = YAML::parseFile($this->path); if ($this->has('extend') && $this->get('extend') !== $this->name) { $parent = Formwork::instance()->schemes()->get($type, $this->get('extend')); - $this->data = array_replace_recursive($parent->toArray(), $this->data); + $this->data = array_replace_recursive($parent->data, $this->data); } if (!$this->has('title')) {