- <?php
- declare(strict_types=1);
- namespace Slivki\Doctrine\Type;
- use Doctrine\DBAL\Platforms\AbstractPlatform;
- use GeoIO\Geometry\Extractor;
- use GeoIO\Geometry\Factory;
- use GeoIO\WKT\Generator\Generator;
- use GeoIO\WKT\Parser\Parser;
- use Jsor\Doctrine\PostGIS\Types\GeometryType as BaseGeometryType;
- class GeometryType extends BaseGeometryType
- {
-     /**
-      * @var Parser
-      */
-     private static $parser;
-     /**
-      * @var Generator
-      */
-     private static $generator;
-     public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string
-     {
-         if ($value === null) {
-             return null;
-         }
-         return self::getGenerator()->generate($value);
-     }
-     /**
-      * @param $value
-      * @param AbstractPlatform $platform
-      * @return mixed|null
-      */
-     public function convertToPHPValue($value, AbstractPlatform $platform)
-     {
-         try {
-             return self::getParser()->parse($value);
-         } catch (\Exception $e) {
-             return null;
-         }
-     }
-     private static function getParser(): Parser
-     {
-         if (!self::$parser) {
-             self::$parser = new Parser(new Factory());
-         }
-         return self::$parser;
-     }
-     private static function getGenerator(): Generator
-     {
-         if (!self::$generator) {
-             self::$generator = new Generator(
-                 new Extractor(),
-                 [
-                     'format' => Generator::FORMAT_EWKT,
-                     'emit_srid' => true,
-                 ]
-             );
-         }
-         return self::$generator;
-     }
- }
-