diff --git a/src/Axios/AxiosExtractor.php b/src/Axios/AxiosExtractor.php
index 8eaa0ba9f6cd40a6fcd3082ea99a0d24430eabf5..d1f8d0efd03408044df8e386abf410cddc3e5395 100644
--- a/src/Axios/AxiosExtractor.php
+++ b/src/Axios/AxiosExtractor.php
@@ -7,6 +7,8 @@ use Doctrine\ORM\Query;
class AxiosExtractor
{
+ public static $loopControl = 50;
+
const DATETIME_FORMAT = 'Y-m-d\TH:i:s.u\Z'; // timestamp ISO 8601 pour HTML5
protected array $triggers = [];
@@ -53,6 +55,12 @@ class AxiosExtractor
protected function extractObject($data, array $properties, string $path = ''): array
{
+ // contrôle de boucle récursive, afin de ne pas saturer la mémoire...
+ if (substr_count($path, '/') >= self::$loopControl){
+ //return [];
+ throw new \Exception("AxiosExtractor has detected a possible infinite loop, and aborted your script with a stack depth of '".self::$loopControl."' frames");
+ }
+
$result = [];
$props = ['id'];
@@ -64,10 +72,6 @@ class AxiosExtractor
$props[] = $prop;
}
}
- } else {
- if (method_exists($data, '__toString')) {
- $props[] = '__toString';
- }
}
} else {
foreach ($properties as $prop) {
@@ -100,11 +104,6 @@ class AxiosExtractor
}
}
- if (array_key_exists('__toString', $result)) {
- $result['libelle'] = $result['__toString'];
- unset($result['__toString']);
- }
-
return $result;
}