diff --git a/src/TaskManager.php b/src/TaskManager.php index 4ab73ae..8379c2a 100644 --- a/src/TaskManager.php +++ b/src/TaskManager.php @@ -33,6 +33,11 @@ class TaskManager */ private $tasks = []; + /** + * @var Serializer + */ + private $serializer; + /** * @param Taskwarrior $taskwarrior */ @@ -400,12 +405,16 @@ private function transformDate(\DateTime $dateTime = null) */ private function getSerializer() { + if ($this->serializer) { + return $this->serializer; + } + $propertyNamingStrategy = new SerializedNameAnnotationStrategy(new CamelCaseNamingStrategy()); $visitor = new JsonSerializationVisitor($propertyNamingStrategy); $visitor->setOptions(JSON_UNESCAPED_UNICODE); - return SerializerBuilder::create() + return $this->serializer = SerializerBuilder::create() ->setPropertyNamingStrategy($propertyNamingStrategy) ->configureHandlers(function (HandlerRegistryInterface $registry) { $registry->registerSubscribingHandler(new CarbonHandler()); diff --git a/src/Taskwarrior.php b/src/Taskwarrior.php index 7c54969..37d0354 100644 --- a/src/Taskwarrior.php +++ b/src/Taskwarrior.php @@ -38,6 +38,7 @@ class Taskwarrior * @param string $taskData * @param array $rcOptions * @param string $bin + * @throws TaskwarriorException */ public function __construct($taskrc = '~/.taskrc', $taskData = '~/.task', $rcOptions = [], $bin = 'task') { @@ -51,6 +52,10 @@ public function __construct($taskrc = '~/.taskrc', $taskData = '~/.task', $rcOpt ), $rcOptions ); + + if (version_compare($this->version(), '2.4.3') < 0) { + throw new TaskwarriorException(sprintf("Taskwarrior version %s isn't supported", $this->version())); + } } /**