Composer cleanup
parent
c3a96d6ab6
commit
6da04c2af7
@ -1,80 +0,0 @@
|
||||
GeoLocation
|
||||
===========
|
||||
|
||||
Retrieve bounding coordinates and distances with GeoLocation.
|
||||
|
||||
This is a PHP port of Java code that was originally published at
|
||||
<a href="http://JanMatuschek.de/LatitudeLongitudeBoundingCoordinates">
|
||||
http://JanMatuschek.de/LatitudeLongitudeBoundingCoordinates</a>. A few modifications were made and an additional helper method to retrieve latitude and longitude from an address has been provided using Google's Geocoding API. <br />
|
||||
|
||||
License:
|
||||
http://creativecommons.org/licenses/by/3.0/
|
||||
|
||||
Examples
|
||||
========
|
||||
|
||||
Get distance between two points:
|
||||
--------------------------------------------------------
|
||||
<pre>
|
||||
<code>
|
||||
use AnthonyMartin\GeoLocation\GeoLocation as GeoLocation;
|
||||
|
||||
// Set locations
|
||||
$edison_nj = GeoLocation::fromDegrees(40.5187154, -74.4120953);
|
||||
$brooklyn_ny = GeoLocation::fromDegrees(40.65, -73.95);
|
||||
|
||||
echo "Distance from Edison, NJ to Brookyln, NY: " .
|
||||
$edison_nj->distanceTo($brooklyn_ny, 'miles') . " miles \n";
|
||||
|
||||
# Distance from Edison, NJ to Brookyln, NY: 25.888611494606 miles
|
||||
|
||||
|
||||
echo "Distance from Edison, NJ to Brooklyn, NY: " .
|
||||
$edison_nj->distanceTo($brooklyn_ny, 'kilometers') . " kilometers \n";
|
||||
|
||||
# Distance from Edison, NJ to Brooklyn, NY: 41.663681581973 kilometers
|
||||
|
||||
</code>
|
||||
</pre>
|
||||
|
||||
|
||||
Get bounding coordinates
|
||||
--------------------------------------------------------
|
||||
<pre>
|
||||
<code>
|
||||
use AnthonyMartin\GeoLocation\GeoLocation as GeoLocation;
|
||||
|
||||
$edison = GeoLocation::fromDegrees(40.5187154, -74.4120953);
|
||||
$coordinates = $edison->boundingCoordinates(3, 'miles');
|
||||
|
||||
echo "min latitude: " . $coordinates[0]->getLatitudeInDegrees() . " \n";
|
||||
echo "min longitude: " . $coordinates[0]->getLongitudeInDegrees() . " \n";
|
||||
|
||||
echo "max latitude: " . $coordinates[1]->getLatitudeInDegrees() . " \n";
|
||||
echo "max longitude: " . $coordinates[1]->getLongitudeInDegrees() . " \n";
|
||||
|
||||
/**
|
||||
* Returns:
|
||||
* min latitude: 40.47529593323
|
||||
* min longitude: -74.469211617725
|
||||
* max latitude: 40.56213486677
|
||||
* max longitude: -74.354978982275
|
||||
**/
|
||||
|
||||
</code>
|
||||
</pre>
|
||||
|
||||
Get latitude and longitude from address or location
|
||||
--------------------------------------------------------
|
||||
<pre>
|
||||
<code>
|
||||
use AnthonyMartin\GeoLocation\GeoLocation as GeoLocation;
|
||||
|
||||
$location = 'New York City';
|
||||
$response = GeoLocation::getGeocodeFromGoogle($location);
|
||||
$latitude = $response->results[0]->geometry->location->lat;
|
||||
$longitude = $response->results[0]->geometry->location->lng;
|
||||
echo $latitude . ', ' . $longitude;
|
||||
# 40.7143528, -74.0059731
|
||||
</code>
|
||||
</pre>
|
@ -1,24 +0,0 @@
|
||||
{
|
||||
"name": "anthonymartin/geo-location",
|
||||
"type": "class",
|
||||
"description": "Retrieve bounding coordinates, distances, longitude and latitude with GeoLocation.class.php",
|
||||
"keywords": ["geolocation","geocoding", "bounding coordinates", "distances"],
|
||||
"homepage": "https://github.com/anthonymartin/GeoLocation.php",
|
||||
"license": "CC 3.0",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Anthony Martin",
|
||||
"email": "anthony@replaycreative.com",
|
||||
"homepage": "http://replaycreative.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"AnthonyMartin": "src/"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,240 +0,0 @@
|
||||
<?php
|
||||
namespace AnthonyMartin\GeoLocation;
|
||||
|
||||
/**
|
||||
* <p>Represents a point on the surface of a sphere. (The Earth is almost
|
||||
* spherical.)</p>
|
||||
*
|
||||
* <p>To create an instance, call one of the static methods fromDegrees() or
|
||||
* fromRadians().</p>
|
||||
*
|
||||
* <p>This is a PHP port of Java code that was originally published at
|
||||
* <a href="http://JanMatuschek.de/LatitudeLongitudeBoundingCoordinates#Java">
|
||||
* http://JanMatuschek.de/LatitudeLongitudeBoundingCoordinates#Java</a>.</p>
|
||||
*
|
||||
* Many thanks to the original author: Jan Philip Matuschek
|
||||
*
|
||||
* @author Anthony Martin
|
||||
* @version November 21 2012
|
||||
*/
|
||||
class GeoLocation {
|
||||
|
||||
private $radLat; // latitude in radians
|
||||
private $radLon; // longitude in radians
|
||||
|
||||
private $degLat; // latitude in degrees
|
||||
private $degLon; // longitude in degrees
|
||||
|
||||
private $angular; // angular radius
|
||||
|
||||
const EARTHS_RADIUS_KM = 6371.01;
|
||||
const EARTHS_RADIUS_MI = 3958.762079;
|
||||
|
||||
protected static $MIN_LAT; // -PI/2
|
||||
protected static $MAX_LAT; // PI/2
|
||||
protected static $MIN_LON; // -PI
|
||||
protected static $MAX_LON; // PI
|
||||
|
||||
public function __construct() {
|
||||
self::$MIN_LAT = deg2rad(-90); // -PI/2
|
||||
self::$MAX_LAT = deg2rad(90); // PI/2
|
||||
self::$MIN_LON = deg2rad(-180); // -PI
|
||||
self::$MAX_LON = deg2rad(180); // PI
|
||||
}
|
||||
|
||||
/**
|
||||
* @param double $latitude the latitude, in degrees.
|
||||
* @param double $longitude the longitude, in degrees.
|
||||
* @return GeoLocation
|
||||
*/
|
||||
public static function fromDegrees($latitude, $longitude) {
|
||||
$location = new GeoLocation();
|
||||
$location->radLat = deg2rad($latitude);
|
||||
$location->radLon = deg2rad($longitude);
|
||||
$location->degLat = $latitude;
|
||||
$location->degLon = $longitude;
|
||||
$location->checkBounds();
|
||||
return $location;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param double $latitude the latitude, in radians.
|
||||
* @param double $longitude the longitude, in radians.
|
||||
* @return GeoLocation
|
||||
*/
|
||||
public static function fromRadians($latitude, $longitude) {
|
||||
$location = new GeoLocation();
|
||||
$location->radLat = $latitude;
|
||||
$location->radLon = $longitude;
|
||||
$location->degLat = rad2deg($latitude);
|
||||
$location->degLon = rad2deg($longitude);
|
||||
$location->checkBounds();
|
||||
return $location;
|
||||
}
|
||||
|
||||
protected function checkBounds() {
|
||||
if ($this->radLat < self::$MIN_LAT || $this->radLat > self::$MAX_LAT ||
|
||||
$this->radLon < self::$MIN_LON || $this->radLon > self::$MAX_LON)
|
||||
throw new \Exception("Invalid Argument");
|
||||
}
|
||||
|
||||
/**
|
||||
* Computes the great circle distance between this GeoLocation instance
|
||||
* and the location argument.
|
||||
* @param GeoLocation $location
|
||||
* @param string $unit_of_measurement
|
||||
* @internal param float $radius the radius of the sphere, e.g. the average radius for a
|
||||
* spherical approximation of the figure of the Earth is approximately
|
||||
* 6371.01 kilometers.
|
||||
* @return double the distance, measured in the same unit as the radius
|
||||
* argument.
|
||||
*/
|
||||
public function distanceTo(GeoLocation $location, $unit_of_measurement) {
|
||||
$radius = $this->getEarthsRadius($unit_of_measurement);
|
||||
|
||||
return acos(sin($this->radLat) * sin($location->radLat) +
|
||||
cos($this->radLat) * cos($location->radLat) *
|
||||
cos($this->radLon - $location->radLon)) * $radius;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return double the latitude, in degrees.
|
||||
*/
|
||||
public function getLatitudeInDegrees() {
|
||||
return $this->degLat;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return double the longitude, in degrees.
|
||||
*/
|
||||
public function getLongitudeInDegrees() {
|
||||
return $this->degLon;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return double the latitude, in radians.
|
||||
*/
|
||||
public function getLatitudeInRadians() {
|
||||
return $this->radLat;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return double the longitude, in radians.
|
||||
*/
|
||||
public function getLongitudeInRadians() {
|
||||
return $this->radLon;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return double angular radius.
|
||||
*/
|
||||
public function getAngular() {
|
||||
return $this->angular;
|
||||
}
|
||||
|
||||
public function __toString() {
|
||||
return "(" . $this->degLat . ", " . $this->degLon . ") = (" .
|
||||
$this->radLat . " rad, " . $this->radLon . " rad";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <p>Computes the bounding coordinates of all points on the surface
|
||||
* of a sphere that have a great circle distance to the point represented
|
||||
* by this GeoLocation instance that is less or equal to the distance
|
||||
* argument.</p>
|
||||
* <p>For more information about the formulae used in this method visit
|
||||
* <a href="http://JanMatuschek.de/LatitudeLongitudeBoundingCoordinates">
|
||||
* http://JanMatuschek.de/LatitudeLongitudeBoundingCoordinates</a>.</p>
|
||||
*
|
||||
* @param double $distance the distance from the point represented by this
|
||||
* GeoLocation instance. Must me measured in the same unit as the radius
|
||||
* argument.
|
||||
* @param string $unit_of_measurement
|
||||
* @throws \Exception
|
||||
* @internal param radius the radius of the sphere, e.g. the average radius for a
|
||||
* spherical approximation of the figure of the Earth is approximately
|
||||
* 6371.01 kilometers.
|
||||
* @return GeoLocation[] an array of two GeoLocation objects such that:<ul>
|
||||
* <li>The latitude of any point within the specified distance is greater
|
||||
* or equal to the latitude of the first array element and smaller or
|
||||
* equal to the latitude of the second array element.</li>
|
||||
* <li>If the longitude of the first array element is smaller or equal to
|
||||
* the longitude of the second element, then
|
||||
* the longitude of any point within the specified distance is greater
|
||||
* or equal to the longitude of the first array element and smaller or
|
||||
* equal to the longitude of the second array element.</li>
|
||||
* <li>If the longitude of the first array element is greater than the
|
||||
* longitude of the second element (this is the case if the 180th
|
||||
* meridian is within the distance), then
|
||||
* the longitude of any point within the specified distance is greater
|
||||
* or equal to the longitude of the first array element
|
||||
* <strong>or</strong> smaller or equal to the longitude of the second
|
||||
* array element.</li>
|
||||
* </ul>
|
||||
*/
|
||||
public function boundingCoordinates($distance, $unit_of_measurement) {
|
||||
$radius = $this->getEarthsRadius($unit_of_measurement);
|
||||
if ($radius < 0 || $distance < 0) throw new \Exception('Arguments must be greater than 0.');
|
||||
|
||||
// angular distance in radians on a great circle
|
||||
$this->angular = $distance / $radius;
|
||||
|
||||
$minLat = $this->radLat - $this->angular;
|
||||
$maxLat = $this->radLat + $this->angular;
|
||||
|
||||
$minLon = 0;
|
||||
$maxLon = 0;
|
||||
if ($minLat > self::$MIN_LAT && $maxLat < self::$MAX_LAT) {
|
||||
$deltaLon = asin(sin($this->angular) /
|
||||
cos($this->radLat));
|
||||
$minLon = $this->radLon - $deltaLon;
|
||||
if ($minLon < self::$MIN_LON) $minLon += 2 * pi();
|
||||
$maxLon = $this->radLon + $deltaLon;
|
||||
if ($maxLon > self::$MAX_LON) $maxLon -= 2 * pi();
|
||||
} else {
|
||||
// a pole is within the distance
|
||||
$minLat = max($minLat, self::$MIN_LAT);
|
||||
$maxLat = min($maxLat, self::$MAX_LAT);
|
||||
$minLon = self::$MIN_LON;
|
||||
$maxLon = self::$MAX_LON;
|
||||
}
|
||||
|
||||
return array(
|
||||
GeoLocation::fromRadians($minLat, $minLon),
|
||||
GeoLocation::fromRadians($maxLat, $maxLon)
|
||||
);
|
||||
}
|
||||
|
||||
protected function getEarthsRadius($unit_of_measurement) {
|
||||
$u = $unit_of_measurement;
|
||||
if($u == 'miles' || $u == 'mi')
|
||||
return $radius = self::EARTHS_RADIUS_MI;
|
||||
elseif($u == 'kilometers' || $u == 'km')
|
||||
return $radius = self::EARTHS_RADIUS_KM;
|
||||
|
||||
else throw new \Exception('You must supply a valid unit of measurement');
|
||||
}
|
||||
/**
|
||||
* Retrieves Geocoding information from Google
|
||||
* eg. $response = GeoLocation::getGeocodeFromGoogle($location);
|
||||
* $latitude = $response->results[0]->geometry->location->lng;
|
||||
* $longitude = $response->results[0]->geometry->location->lng;
|
||||
* @param string $location address, city, state, etc.
|
||||
* @return \stdClass
|
||||
*/
|
||||
public static function getGeocodeFromGoogle($location) {
|
||||
$url = 'http://maps.googleapis.com/maps/api/geocode/json?address='.urlencode($location).'&sensor=false';
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL,$url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
return json_decode(curl_exec($ch));
|
||||
}
|
||||
public static function MilesToKilometers($miles) {
|
||||
return $miles * 1.6093439999999999;
|
||||
}
|
||||
public static function KilometersToMiles($km) {
|
||||
return $km * 0.621371192237334;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit1ae2aafd9d1db3d567ddc4629e5b9d33::getLoader();
|
@ -1,413 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
/**
|
||||
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
|
||||
*
|
||||
* $loader = new \Composer\Autoload\ClassLoader();
|
||||
*
|
||||
* // register classes with namespaces
|
||||
* $loader->add('Symfony\Component', __DIR__.'/component');
|
||||
* $loader->add('Symfony', __DIR__.'/framework');
|
||||
*
|
||||
* // activate the autoloader
|
||||
* $loader->register();
|
||||
*
|
||||
* // to enable searching the include path (eg. for PEAR packages)
|
||||
* $loader->setUseIncludePath(true);
|
||||
*
|
||||
* In this example, if you try to use a class in the Symfony\Component
|
||||
* namespace or one of its children (Symfony\Component\Console for instance),
|
||||
* the autoloader will first look for the class under the component/
|
||||
* directory, and it will then fallback to the framework/ directory if not
|
||||
* found before giving up.
|
||||
*
|
||||
* This class is loosely based on the Symfony UniversalClassLoader.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @see http://www.php-fig.org/psr/psr-0/
|
||||
* @see http://www.php-fig.org/psr/psr-4/
|
||||
*/
|
||||
class ClassLoader
|
||||
{
|
||||
// PSR-4
|
||||
private $prefixLengthsPsr4 = array();
|
||||
private $prefixDirsPsr4 = array();
|
||||
private $fallbackDirsPsr4 = array();
|
||||
|
||||
// PSR-0
|
||||
private $prefixesPsr0 = array();
|
||||
private $fallbackDirsPsr0 = array();
|
||||
|
||||
private $useIncludePath = false;
|
||||
private $classMap = array();
|
||||
|
||||
private $classMapAuthoritative = false;
|
||||
|
||||
public function getPrefixes()
|
||||
{
|
||||
if (!empty($this->prefixesPsr0)) {
|
||||
return call_user_func_array('array_merge', $this->prefixesPsr0);
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
public function getPrefixesPsr4()
|
||||
{
|
||||
return $this->prefixDirsPsr4;
|
||||
}
|
||||
|
||||
public function getFallbackDirs()
|
||||
{
|
||||
return $this->fallbackDirsPsr0;
|
||||
}
|
||||
|
||||
public function getFallbackDirsPsr4()
|
||||
{
|
||||
return $this->fallbackDirsPsr4;
|
||||
}
|
||||
|
||||
public function getClassMap()
|
||||
{
|
||||
return $this->classMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $classMap Class to filename map
|
||||
*/
|
||||
public function addClassMap(array $classMap)
|
||||
{
|
||||
if ($this->classMap) {
|
||||
$this->classMap = array_merge($this->classMap, $classMap);
|
||||
} else {
|
||||
$this->classMap = $classMap;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix, either
|
||||
* appending or prepending to the ones previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param array|string $paths The PSR-0 root directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*/
|
||||
public function add($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr0
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$this->fallbackDirsPsr0,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$first = $prefix[0];
|
||||
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
||||
|
||||
return;
|
||||
}
|
||||
if ($prepend) {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixesPsr0[$first][$prefix]
|
||||
);
|
||||
} else {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$this->prefixesPsr0[$first][$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace, either
|
||||
* appending or prepending to the ones previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-4 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function addPsr4($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
// Register directories for the root namespace.
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr4
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$this->fallbackDirsPsr4,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||
// Register directories for a new namespace.
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
} elseif ($prepend) {
|
||||
// Prepend directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixDirsPsr4[$prefix]
|
||||
);
|
||||
} else {
|
||||
// Append directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$this->prefixDirsPsr4[$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix,
|
||||
* replacing any others previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param array|string $paths The PSR-0 base directories
|
||||
*/
|
||||
public function set($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr0 = (array) $paths;
|
||||
} else {
|
||||
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace,
|
||||
* replacing any others previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-4 base directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function setPsr4($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr4 = (array) $paths;
|
||||
} else {
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns on searching the include path for class files.
|
||||
*
|
||||
* @param bool $useIncludePath
|
||||
*/
|
||||
public function setUseIncludePath($useIncludePath)
|
||||
{
|
||||
$this->useIncludePath = $useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Can be used to check if the autoloader uses the include path to check
|
||||
* for classes.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getUseIncludePath()
|
||||
{
|
||||
return $this->useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns off searching the prefix and fallback directories for classes
|
||||
* that have not been registered with the class map.
|
||||
*
|
||||
* @param bool $classMapAuthoritative
|
||||
*/
|
||||
public function setClassMapAuthoritative($classMapAuthoritative)
|
||||
{
|
||||
$this->classMapAuthoritative = $classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should class lookup fail if not found in the current class map?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isClassMapAuthoritative()
|
||||
{
|
||||
return $this->classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers this instance as an autoloader.
|
||||
*
|
||||
* @param bool $prepend Whether to prepend the autoloader or not
|
||||
*/
|
||||
public function register($prepend = false)
|
||||
{
|
||||
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters this instance as an autoloader.
|
||||
*/
|
||||
public function unregister()
|
||||
{
|
||||
spl_autoload_unregister(array($this, 'loadClass'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the given class or interface.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
* @return bool|null True if loaded, null otherwise
|
||||
*/
|
||||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the path to the file where the class is defined.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
*
|
||||
* @return string|false The path if found, false otherwise
|
||||
*/
|
||||
public function findFile($class)
|
||||
{
|
||||
// work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
|
||||
if ('\\' == $class[0]) {
|
||||
$class = substr($class, 1);
|
||||
}
|
||||
|
||||
// class map lookup
|
||||
if (isset($this->classMap[$class])) {
|
||||
return $this->classMap[$class];
|
||||
}
|
||||
if ($this->classMapAuthoritative) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$file = $this->findFileWithExtension($class, '.php');
|
||||
|
||||
// Search for Hack files if we are running on HHVM
|
||||
if ($file === null && defined('HHVM_VERSION')) {
|
||||
$file = $this->findFileWithExtension($class, '.hh');
|
||||
}
|
||||
|
||||
if ($file === null) {
|
||||
// Remember that this class does not exist.
|
||||
return $this->classMap[$class] = false;
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
private function findFileWithExtension($class, $ext)
|
||||
{
|
||||
// PSR-4 lookup
|
||||
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||
|
||||
$first = $class[0];
|
||||
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||
foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
|
||||
if (0 === strpos($class, $prefix)) {
|
||||
foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-4 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr4 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 lookup
|
||||
if (false !== $pos = strrpos($class, '\\')) {
|
||||
// namespaced class name
|
||||
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
||||
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
||||
} else {
|
||||
// PEAR-like class name
|
||||
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
||||
}
|
||||
|
||||
if (isset($this->prefixesPsr0[$first])) {
|
||||
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
||||
if (0 === strpos($class, $prefix)) {
|
||||
foreach ($dirs as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr0 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 include paths.
|
||||
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope isolated include.
|
||||
*
|
||||
* Prevents access to $this/self from included files.
|
||||
*/
|
||||
function includeFile($file)
|
||||
{
|
||||
include $file;
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
|
||||
Copyright (c) 2016 Nils Adermann, Jordi Boggiano
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
);
|
@ -1,10 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_files.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'c7359326b6707d98bdc176bf9ddeaebf' => $vendorDir . '/catfan/medoo/medoo.php',
|
||||
);
|
@ -1,10 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_namespaces.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'AnthonyMartin' => array($vendorDir . '/anthonymartin/geo-location/src'),
|
||||
);
|
@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_psr4.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
);
|
@ -1,59 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInit1ae2aafd9d1db3d567ddc4629e5b9d33
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
public static function loadClassLoader($class)
|
||||
{
|
||||
if ('Composer\Autoload\ClassLoader' === $class) {
|
||||
require __DIR__ . '/ClassLoader.php';
|
||||
}
|
||||
}
|
||||
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInit1ae2aafd9d1db3d567ddc4629e5b9d33', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit1ae2aafd9d1db3d567ddc4629e5b9d33', 'loadClassLoader'));
|
||||
|
||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->set($namespace, $path);
|
||||
}
|
||||
|
||||
$map = require __DIR__ . '/autoload_psr4.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->setPsr4($namespace, $path);
|
||||
}
|
||||
|
||||
$classMap = require __DIR__ . '/autoload_classmap.php';
|
||||
if ($classMap) {
|
||||
$loader->addClassMap($classMap);
|
||||
}
|
||||
|
||||
$loader->register(true);
|
||||
|
||||
$includeFiles = require __DIR__ . '/autoload_files.php';
|
||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||
composerRequire1ae2aafd9d1db3d567ddc4629e5b9d33($fileIdentifier, $file);
|
||||
}
|
||||
|
||||
return $loader;
|
||||
}
|
||||
}
|
||||
|
||||
function composerRequire1ae2aafd9d1db3d567ddc4629e5b9d33($fileIdentifier, $file)
|
||||
{
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
require $file;
|
||||
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
}
|
||||
}
|
@ -1,106 +0,0 @@
|
||||
[
|
||||
{
|
||||
"name": "catfan/medoo",
|
||||
"version": "dev-master",
|
||||
"version_normalized": "9999999-dev",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/catfan/Medoo.git",
|
||||
"reference": "342e2d6a3bcf4adcac58e67593d63547139ab1ac"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/catfan/Medoo/zipball/342e2d6a3bcf4adcac58e67593d63547139ab1ac",
|
||||
"reference": "342e2d6a3bcf4adcac58e67593d63547139ab1ac",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-pdo": "*",
|
||||
"php": ">=5.1"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-pdo_dblib": "For MSSQL or Sybase databases on Linux/UNIX platform",
|
||||
"ext-pdo_mysql": "For MySQL or MariaDB databases",
|
||||
"ext-pdo_oci": "For Oracle databases",
|
||||
"ext-pdo_pqsql": "For PostgreSQL databases",
|
||||
"ext-pdo_sqlite": "For SQLite databases",
|
||||
"ext-pdo_sqlsrv": "For MSSQL databases on Windows platform"
|
||||
},
|
||||
"time": "2016-02-14 16:03:42",
|
||||
"type": "framework",
|
||||
"installation-source": "source",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"medoo.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Angel Lai",
|
||||
"email": "angel@catfan.me"
|
||||
}
|
||||
],
|
||||
"description": "The Lightest PHP database framework to accelerate development",
|
||||
"homepage": "http://medoo.in",
|
||||
"keywords": [
|
||||
"database",
|
||||
"lightweight",
|
||||
"mssql",
|
||||
"mysql",
|
||||
"php framework",
|
||||
"sql",
|
||||
"sqlite"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "anthonymartin/geo-location",
|
||||
"version": "v1.0.0",
|
||||
"version_normalized": "1.0.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anthonymartin/GeoLocation.php.git",
|
||||
"reference": "a54a562dfe8ae3eef9a5863552401d26bc80e921"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/anthonymartin/GeoLocation.php/zipball/a54a562dfe8ae3eef9a5863552401d26bc80e921",
|
||||
"reference": "a54a562dfe8ae3eef9a5863552401d26bc80e921",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"time": "2013-10-25 21:13:03",
|
||||
"type": "class",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"AnthonyMartin": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"CC 3.0"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Anthony Martin",
|
||||
"email": "anthony@replaycreative.com",
|
||||
"homepage": "http://replaycreative.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Retrieve bounding coordinates, distances, longitude and latitude with GeoLocation.class.php",
|
||||
"homepage": "https://github.com/anthonymartin/GeoLocation.php",
|
||||
"keywords": [
|
||||
"bounding coordinates",
|
||||
"distances",
|
||||
"geocoding",
|
||||
"geolocation"
|
||||
]
|
||||
}
|
||||
]
|
Reference in New Issue