weijiajia / ip-address
IP address information query system, integrating multiple IP geographic location services
1.0.2
2024-10-12 19:49 UTC
Requires
- php: ^8.2
- ext-mbstring: *
- psr/log: ^3.0
- saloonphp/saloon: ^3.10
Requires (Dev)
- pestphp/pest: ^3.2
This package is auto-updated.
Last update: 2025-03-12 21:13:45 UTC
README
Ip Address 是一个 IP 地址信息查询系统,集成了多个 IP 地理位置服务
支持平台
特性
- 支持多个 IP 地理位置服务提供商 (目前支持 ip138 和 pconline)
- 标准化的响应格式
- 灵活的日志记录功能
- 错误处理
要求
- PHP 8.2+
- Composer
安装
通过 Composer 安装:
composer require weijiajia/ip-address
使用方法
使用 pconline
use Weijiajia\IpConnector; use Weijiajia\Requests\PconLineRequest; $connector = new IpConnector(); // 可选: 设置日志 $logger = new YourLoggerImplementation(); // 替换为您的实际日志实现 $connector->withLogger($logger); //可选:设置超时 $connector->config()->add('timeout',30); $request = new PconLineRequest('your ip address'); $response = $connector->send($request); $ipInfo = $response->dto(); echo $ipInfo->getCity(); // 输出城市信息 echo $ipInfo->getAddr(); // 输出详细地址
使用 Ip138Request
use Weijiajia\IpConnector; use Weijiajia\Requests\Ip138Request; $connector = new IpConnector(); $request = new Ip138Request($token, 'your ip address'); $response = $connector->send($request); $ipInfo = $response->dto(); echo $ipInfo->getCity(); // 输出城市信息 echo $ipInfo->getAddr(); // 输出详细地址
错误处理
use Weijiajia\IpConnector; use Weijiajia\Requests\PconLineRequest; use Weijiajia\Exceptions\IpLookupException; $connector = new IpConnector(); try { $request = new PconLineRequest('invalid_ip'); $response = $connector->send($request); $ipInfo = $response->dto(); } catch (IpLookupException $e) { echo "IP 查询失败: " . $e->getMessage(); } catch (\Exception $e) { echo "发生错误: " . $e->getMessage(); }
扩展
要添加新的 IP 地理位置服务提供商,只需创建一个新的 Request 类并实现必要的方法。例如:
namespace Weijiajia\Requests; use Saloon\Enums\Method; use Saloon\Http\Request; class NewProviderRequest extends Request { protected Method $method = Method::GET; public function __construct(protected string $ip) { } public function resolveEndpoint(): string { return 'https://api.newprovider.com/ip-lookup'; } // 实现必要的方法... public function createDtoFromResponse(Response $response): IpResponse { $json = $response->json(); return new IpResponse([ 'city' => $response->json('city'), 'addr' => $response->json('addr'), 'ip' => $response->json('ip'), ... ]); } } // 使用新的 IP 地理位置服务提供商 $connector = new IpConnector(); $request = new NewProviderRequest('your ip address'); $response = $connector->send($request); $ipInfo = $response->dto(); echo $ipInfo->getCity(); // 输出城市信息 echo $ipInfo->getAddr(); // 输出详细地址
参考文档
贡献指南
我们欢迎并感谢任何形式的贡献。以下是一些贡献的方式:
- 报告 Bug
- 提交功能请求
- 提交代码改进
- 改进文档
提交 Pull Request
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature
) - 提交您的改动 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 创建一个 Pull Request
许可证
IP Address 是开源软件,基于 MIT 许可证。