From 1b5a56df48374482524d7dff21a9a566711f992a Mon Sep 17 00:00:00 2001 From: provokateurin Date: Sun, 15 Sep 2024 13:40:16 +0200 Subject: [PATCH] fix(Entity): Fix magic setter call for custom strong typed setters Signed-off-by: provokateurin --- lib/public/AppFramework/Db/Entity.php | 5 ++--- tests/lib/AppFramework/Db/EntityTest.php | 9 +++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/public/AppFramework/Db/Entity.php b/lib/public/AppFramework/Db/Entity.php index 1ae938f6e32f8..ab8a5f2c67c63 100644 --- a/lib/public/AppFramework/Db/Entity.php +++ b/lib/public/AppFramework/Db/Entity.php @@ -70,9 +70,8 @@ public static function fromRow(array $row): static { $instance = new static(); foreach ($row as $key => $value) { - $prop = ucfirst($instance->columnToProperty($key)); - $setter = 'set' . $prop; - $instance->$setter($value); + $prop = $instance->columnToProperty($key); + $instance->setter($prop, [$value]); } $instance->resetUpdatedFields(); diff --git a/tests/lib/AppFramework/Db/EntityTest.php b/tests/lib/AppFramework/Db/EntityTest.php index d76a8ccfe0665..d7e4c30375b48 100644 --- a/tests/lib/AppFramework/Db/EntityTest.php +++ b/tests/lib/AppFramework/Db/EntityTest.php @@ -42,7 +42,6 @@ * @method void setTrueOrFalse(bool $trueOrFalse) * @method bool getAnotherBool() * @method bool isAnotherBool() - * @method void setAnotherBool(bool $anotherBool) * @method string getLongText() * @method void setLongText(string $longText) */ @@ -62,6 +61,10 @@ public function __construct($name = null) { $this->addType('longText', 'blob'); $this->name = $name; } + + public function setAnotherBool(bool $anotherBool): void { + parent::setAnotherBool($anotherBool); + } } @@ -86,12 +89,14 @@ public function testResetUpdatedFields() { public function testFromRow() { $row = [ 'pre_name' => 'john', - 'email' => 'john@something.com' + 'email' => 'john@something.com', + 'another_bool' => 1, ]; $this->entity = TestEntity::fromRow($row); $this->assertEquals($row['pre_name'], $this->entity->getPreName()); $this->assertEquals($row['email'], $this->entity->getEmail()); + $this->assertEquals($row['another_bool'], $this->entity->getAnotherBool()); }