2017 © Pedro Peláez
 

library geodata

Interfaces and traits for geo data

image

germania-kg/geodata

Interfaces and traits for geo data

  • Tuesday, April 24, 2018
  • by germania-kg
  • Repository
  • 2 Watchers
  • 0 Stars
  • 13 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 18 % Grown

The README.md

, (*1)


Germania KG · GeoData

Packagist PHP version Tests, (*2)

Installation

$ composer require germania-kg/geodata

Interfaces

GeoDataProviderInterface

<?php
use Germania\GeoData\GeoDataProviderInterface;
/**
 * @return null|GeoDataInterface
 */
public function getGeoData();

GeoDataInterface

<?php
use Germania\GeoData\GeoDataInterface;
/**
 * @return float|null
 */
public function getLatitude();

/**
 * @return float|null
 */
public function getLongitude();


/**
 * @return float[]
 */
public function getLatLon();

/**
 * @return string|null
 */
public function getSource();

/**
 * @return string|null
 */
public function getStatus();

Traits

GeoDataProviderTrait

The GeoDataProviderTrait provides a public geodata property as well as a getGeoData method prescribed by GeoDataProviderInterface:, (*3)

<?php
use Germania\GeoData\GeoDataProviderTrait;

class MyGeoDataProvider
{
    use GeoDataProviderTrait;
}

$object = new MyGeoDataProvider;

// Property or GeoDataProviderInterface method
$object->geodata;
$object->getGeoData();

Classes

GeoDataAbstract

The GeoDataAbstract provides public latitude and longitude properties as well as the methods prescribed by GeoDataInterface:, (*4)

<?php
use Germania\GeoData\GeoDataAbstract;

class MyGeoData extends GeoDataAbstract
{
    use GeoDataTrait;
}

$object = new MyGeoData;

// Properties
echo $object->latitude;
echo $object->longitude;

// GeoDataProviderInterface methods
echo $object->getLatitude();
echo $object->getLongitude();
$coords = $object->getLatLon();

GeoData

The GeoData class extends GeoDataAbstract and implements GeoDataInterface and also GeoDataProviderInterface:, (*5)

<?php
use Germania\GeoData\GeoData;  

// "Null" object
$geo = new GeoData();
$coords = $object->getLatLon();    // [ null, null]
$coords = $object->getLatitude();  // null
$coords = $object->getLongitude(); // null
echo $geo->getSource(); // null

// With real data
$latitude = 54.0;
$longitude = 10.0;
$description = "provided by Google Maps";

$geo = new GeoData( $latitude, $longitude, $description);
$geo->setSource("Corrected manually");
$get->setStatus("Not too exact");

$coords = $object->getLatLon(); // [ 54.0, 10.0]
echo $geo->getSource(); // "Corrected manually"

Factories

GeoDataFactory

The GeoDataFactory class provides a fromArray method:, (*6)

<?php
use Germania\GeoData\GeoDataFactory;  
use Germania\GeoData\GeoData;  

$factory = new GeoDataFactory;

// All these fields default to null
$geodata = $factory([
  'latitude'  => 54, 
  'longitude' => 10, 
  'source' => "Test case", 
  'status' => "OK"  
]);

GuzzleGeoDataFactory

The GuzzleGeoDataFactory is a client for Germania's Geocoding API. It implements StringGeoDataFactoryInterface and requires Guzzle, configured to ask Germania's GeoCoder API., (*7)

Sorry, the API is not public. You may use the Factory class to cook your own HTTP-client-based GeoData factory., (*8)

<?php
use Germania\GeoData\GuzzleGeoDataFactory;
use GuzzleHttp\Client as GuzzleClient;

$guzzle = new GuzzleClient( ... );
$factory = new GuzzleGeoDataFactory($guzzle);

$geodata = $factory->fromString("Musterstraße 1, 12345 Musterstadt");
echo get_class( $geodata ); // Germania\GeoData\GeoData

Exceptions: Just in case the Guzzle client throws an exception or the API response is invalid, watch out for these:, (*9)

<?php
use Germania\GeoData\GeoDataExceptionInterface;
use Germania\GeoData\GeoDataFactoryRuntimeException;

// For 404 ClientExceptions, extends GeoDataFactoryRuntimeException
use Germania\GeoData\GeoDataFactoryNotFoundException;

Filters

NotEmptyGeoDataFilterIterator

Accepts any Traversable and filters for GeoDataInterface or GeoDataProviderInterface items whose getLatitude and getLongitude results are not empty., (*10)

Development

$ git clone https://github.com/GermaniaKG/Geodata.git
$ cd Geodata
$ composer install

Unit tests

Either copy phpunit.xml.dist to phpunit.xml and adapt to your needs, or leave as is. Run PhpUnit test or composer scripts like this:, (*11)

$ composer test
# or
$ vendor/bin/phpunit

The Versions

24/04 2018

dev-master

9999999-dev

Interfaces and traits for geo data

  Sources   Download

MIT

The Development Requires

by Carsten Witt

24/04 2018

dev-develop

dev-develop

Interfaces and traits for geo data

  Sources   Download

MIT

The Development Requires

by Carsten Witt

24/04 2018

1.0.1

1.0.1.0

Interfaces and traits for geo data

  Sources   Download

MIT

The Development Requires

by Carsten Witt

23/04 2018

1.0.0

1.0.0.0

Interfaces and traits for geo data

  Sources   Download

MIT

by Carsten Witt