Ajout jsonserializable

This commit is contained in:
Gregory Letellier
2023-11-13 16:16:12 +01:00
parent bdb0a88e58
commit 43729579fa
4 changed files with 24 additions and 2 deletions

View File

@@ -5,9 +5,10 @@ namespace Kletellier\PdoWrapper;
use ArrayIterator; use ArrayIterator;
use Countable; use Countable;
use IteratorAggregate; use IteratorAggregate;
use JsonSerializable;
use Traversable; use Traversable;
class Collection implements IteratorAggregate, Countable class Collection implements IteratorAggregate, Countable, JsonSerializable
{ {
private array $elements; private array $elements;
@@ -111,4 +112,9 @@ class Collection implements IteratorAggregate, Countable
{ {
return new ArrayIterator($this->elements); return new ArrayIterator($this->elements);
} }
public function jsonSerialize(): mixed
{
return $this->elements;
}
} }

View File

@@ -2,7 +2,9 @@
namespace Kletellier\PdoWrapper; namespace Kletellier\PdoWrapper;
class Model use JsonSerializable;
class Model implements JsonSerializable
{ {
protected mixed $values; protected mixed $values;
protected array $updated; protected array $updated;
@@ -153,4 +155,9 @@ class Model
return $table; return $table;
} }
public function jsonSerialize(): mixed
{
return $this->values;
}
} }

View File

@@ -67,6 +67,9 @@ test("collection", function () {
expect($collo)->toBeInstanceOf(Collection::class); expect($collo)->toBeInstanceOf(Collection::class);
expect(count($collo))->toBe(2); expect(count($collo))->toBe(2);
$json = json_encode($collo);
expect($json)->toBeJson();
$pluck = $collo->pluck("key"); $pluck = $collo->pluck("key");
expect($pluck)->toBeInstanceOf(Collection::class); expect($pluck)->toBeInstanceOf(Collection::class);
expect(count($pluck))->toBe(2); expect(count($pluck))->toBe(2);

View File

@@ -53,6 +53,12 @@ test("model find", function() {
$row->col1 = "test"; $row->col1 = "test";
$res = $row->save(); $res = $row->save();
expect($res)->toBe(true); expect($res)->toBe(true);
$json = json_encode($row);
expect($json)->toBeJson();
$obj = json_decode($json);
expect($obj->col1)->toBe("test");
}); });
test("querybuilder", function() { test("querybuilder", function() {