anglemx / airports
自动生成的PHP抽象类,包含纯PHP代码的全局IATA机场数据库。
Requires
- php: >=5.3
Requires (Dev)
- ext-curl: *
- ext-json: *
- phpunit/phpunit: ^4
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。