public static function fromString($wktArgument)
 {
     $geometry_strings = preg_split('/,\\s*(?=[A-Za-z])/', $wktArgument);
     return new static(array_map(function ($geometry_string) {
         $klass = Geometry::getWKTClass($geometry_string);
         return call_user_func($klass . '::fromWKT', $geometry_string);
     }, $geometry_strings));
 }
 public function testGetWKTClass()
 {
     $this->assertEquals(Point::class, Geometry::getWKTClass('POINT(0 0)'));
     $this->assertEquals(LineString::class, Geometry::getWKTClass('LINESTRING(0 0,1 1,1 2)'));
     $this->assertEquals(Polygon::class, Geometry::getWKTClass('POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))'));
     $this->assertEquals(MultiPoint::class, Geometry::getWKTClass('MULTIPOINT((0 0),(1 2))'));
     $this->assertEquals(MultiLineString::class, Geometry::getWKTClass('MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4))'));
     $this->assertEquals(MultiPolygon::class, Geometry::getWKTClass('MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))'));
     $this->assertEquals(GeometryCollection::class, Geometry::getWKTClass('GEOMETRYCOLLECTION(POINT(2 3),LINESTRING(2 3,3 4))'));
 }