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.
54 lines
1.3 KiB
54 lines
1.3 KiB
<?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; |
|
} |
|
} |
|
}
|
|
|