55 lines
1.3 KiB
PHP
55 lines
1.3 KiB
PHP
<?php
|
|
/**
|
|
* Contains the factory class that handles the creation of geometric objects
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace PhpMyAdmin\Gis;
|
|
|
|
use function strtoupper;
|
|
|
|
/**
|
|
* Factory class that handles the creation of geometric objects.
|
|
*/
|
|
class GisFactory
|
|
{
|
|
/**
|
|
* Returns the singleton instance of geometric class of the given type.
|
|
*
|
|
* @param string $type type of the geometric object
|
|
*
|
|
* @return GisGeometry|false the singleton instance of geometric class of the given type
|
|
*
|
|
* @static
|
|
*/
|
|
public static function factory($type)
|
|
{
|
|
switch (strtoupper($type)) {
|
|
case 'MULTIPOLYGON':
|
|
return GisMultiPolygon::singleton();
|
|
|
|
case 'POLYGON':
|
|
return GisPolygon::singleton();
|
|
|
|
case 'MULTIPOINT':
|
|
return GisMultiPoint::singleton();
|
|
|
|
case 'POINT':
|
|
return GisPoint::singleton();
|
|
|
|
case 'MULTILINESTRING':
|
|
return GisMultiLineString::singleton();
|
|
|
|
case 'LINESTRING':
|
|
return GisLineString::singleton();
|
|
|
|
case 'GEOMETRYCOLLECTION':
|
|
return GisGeometryCollection::singleton();
|
|
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
}
|