PHPackages                             mfmbarber/hackpostcodes - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. mfmbarber/hackpostcodes

ActiveLibrary[API Development](/categories/api)

mfmbarber/hackpostcodes
=======================

A hack library for using postcodes.io

v1.0.2(9y ago)5151GPLHack

Since Apr 11Pushed 9y ago1 watchersCompare

[ Source](https://github.com/Matt-Barber/HackPostcodes)[ Packagist](https://packagist.org/packages/mfmbarber/hackpostcodes)[ RSS](/packages/mfmbarber-hackpostcodes/feed)WikiDiscussions master Synced 4w ago

READMEChangelogDependencies (1)Versions (4)Used By (0)

HackPostcodes
=============

[](#hackpostcodes)

HackPostcodes is a library written in Hack that wraps around the  API.

Motivation
----------

[](#motivation)

I've been learning the Hack programming language, and the Hip Hop Virtual Machine (HHVM) - so seemed like a good excuse to make something usable.

Dependancies
------------

[](#dependancies)

- This was written using HHVM v3.18, it's probably backwards compatible to a degree though
- PHPUnit 5.7.\* - There isn't compatibility with HHVM above this yet

Installation
------------

[](#installation)

You can install this library using composer:

```
$ composer install mfmbarber/HackPostcodes

```

Usage
-----

[](#usage)

To use the Postcodes library you first need to ensure you instantiate the CurlRequest class, and inject this into Postcodes as a constructor dependancy. This allows you to swap out the CurlRequest class with your own implementation if required. It also allows us to mock our dependancy when testing.

Once you have instantiated the Postcodes class you can then call any of the following methods off of this:

- lookup(string $postcode) : Map Use this to lookup a single postcode and get back a map of the result
- lookupBulk(Vector $postcodes) : Vector Use this to lookup a set of postcodes and get back a vector of maps
- lookupLatLon(Pair&lt;float, float&gt; $geolocation) : Vector Use this to look up at latitude / longitude point and return a vector of maps - where each map represents a local postcodes to that position
- lookupBulkLatLong(Vector&lt;Pair&lt;float, float&gt;&gt; $geolocations) : Vector&lt;Vector&gt; Use this to lookup a vector of longitude / latitude points and return a vector, of vectors, of maps. Where each first level represents a corresponding longitude / latitude point, and each sub-vector represents the local postcodes to that location
- isValid(string $postcode) : bool Check to see if a postcode is valid (both regex and a UK postcode)
- getNearest(string $postcode) : Vector Find the postcodes nearest to a given postcode, and return this as a Vector of Maps
- autocomplete(string $postcode, int $limit = 10) : Vector Given part of a postcode, and the amount of results to return (limit is 100), return a Vector of potential full postcode strings
- random() : Map Return a random postcode as a map

-getDistance(string $postcode1, string $postcode2) : num Return the shortest distance (straight line) between two postcodes, this uses the Haversine formula to calculate.

```
