anglemx/airports

自动生成的PHP抽象类,包含纯PHP代码的全局IATA机场数据库。

v1.1.2 2024-02-09 22:08 UTC

This package is auto-updated.

Last update: 2024-09-09 23:19:49 UTC


README

这个库是一个自动生成的PHP抽象类,其中包含全局IATA机场数据库的纯PHP代码。

数据库是从由 mwgg 发布的ICAO机场数据库中获取的,发布在 github.com/mwgg/Airports

最后更新:2024-02-09

注意:我们没有测试这比从原始.json文件或SQLite数据库加载更快。然而,它确实简化了我们的部署过程。请随意进行基准测试并提交pull请求!

安装

composer require anglemx/airports

使用方法

使用Composer安装后,只需将其导入到您的代码中。

use Angle\Airports\AirportLibrary;

根据已知的IATA代码查找单个机场

/** @var \Angle\Airports\Airport $airport */
$airport = AirportLibrary::find('LMM');

机场条目包含

var_dump($airport);

/**
object(Angle\Airports\Airport)(10) {
  ["icao"]=>
  string(4) "MMLM"
  ["iata"]=>
  string(3) "LMM"
  ["name"]=>
  string(38) "Valle del Fuerte International Airport"
  ["city"]=>
  string(10) "Los Mochis"
  ["state"]=>
  string(7) "Sinaloa"
  ["country"]=>
  string(2) "MX"
  ["elevation"]=>
  int(16)
  ["lat"]=>
  float(25.6851997375)
  ["lon"]=>
  float(-109.081001282)
  ["tz"]=>
  string(16) "America/Mazatlan"
}
*/

// If needed, the `Airport` object can also be casted as an array:

var_dump($airport->toArray());

/**
array(10) {
  ["iata"]=>
  string(3) "LMM"
  ["icao"]=>
  string(4) "MMLM"
  ["name"]=>
  string(38) "Valle del Fuerte International Airport"
  ["city"]=>
  string(10) "Los Mochis"
  ["state"]=>
  string(7) "Sinaloa"
  ["country"]=>
  string(2) "MX"
  ["elevation"]=>
  int(16)
  ["lat"]=>
  float(25.6851997375)
  ["lon"]=>
  float(-109.081001282)
  ["tz"]=>
  string(16) "America/Mazatlan"
}
*/

查找一个国家的所有机场

/** @var \Angle\Airports\Airport[] $airports */
$airports = AirportLibrary::findByCountry('MX');

返回一个包含指定国家机场的数组,其中每个条目的IATA代码作为键。

获取完整的机场列表

$airports = AirportLibrary::getFullList();

返回一个包含列表中所有机场的数组(作为数组,而不是对象),其中每个条目的IATA代码作为键。

构建/更新

要求

  • ext-curl
  • ext-json

在以下位置运行脚本

$> php build/build.php

这将从GitHub仓库 github.com/mwgg/Airports/raw/master/airports.json 下载最新的源代码 airports.json 到一个临时文件,将其解析,并用它替换 build/AirportLibrary.php 中找到的占位符,将最终的自动生成的文件写入 src/AirportLibrary.php

不要直接修改 src/AirportLibrary.php 中的文件。相反,修改 build/ 目录中的 模板 文件,然后运行 build.php 脚本。

虽然现在相当陈旧,但我们仍然针对PHP 5.3进行优化,以便与旧代码库保持兼容。这意味着

  • 不使用PHP7的常量数组或任何其他可能提高库性能的现代功能。
  • 使用PHPUnit 4,尽管它现在已经弃用。

测试

这个库非常简单,但我们还是为了好玩写了一些“测试”。这些测试需要PHPUnit 4。

$> composer install
$> ./vendor/bin/phpunit tests/AirportLibraryTest

鸣谢

源信息是从由 mwgg 发布的ICAO机场数据库中获取的,发布在 github.com/mwgg/Airports

许可

MIT许可证。© 2019 Angle Consulting