You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.3 KiB
55 lines
1.3 KiB
2 years ago
|
<?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;
|
||
|
}
|
||
|
}
|
||
|
}
|