krepysh-spec/ipros
最新稳定版本:v1.0.2
Composer 安装命令:
composer require krepysh-spec/ipros
包简介
PSR-20 compatible clock library that retrieves current time using external providers and IP geolocation.
README 文档
README
IPRosClock is a PHP library that implements Psr\Clock\ClockInterface and retrieves the current time using external time or geo-IP providers such as ipapi.co.
🚀 Features
- PSR-compatible ClockInterface
- Get current time based on IP address
- Easily switchable external providers
- Strict IP validation
- Extendable provider abstraction
📦 Installation
composer require krepysh-spec/ipros
🧑💻 Usage
1. Create a Provider
You can use a built-in provider like IpApiProvider, or create your own by extending AbstractProvider.
use KrepyshSpec\IPros\IPRosClock; use KrepyshSpec\IPros\Providers\IpApi\IpApiProvider; $clock = new IPRosClock( new IpApiProvider() );
2. Get Time for Current IP
$now = $clock->now(); echo $now->format('Y-m-d H:i:s');
3. Set Custom IP Address
$clock->setIp('127.0.0.1'); echo $clock->now()->format(DateTimeInterface::RFC3339);
4. Set Custom Options (e.g. API Key, Region)
You can pass any custom options required by your provider using setOptions():
$clock->setOptions([ 'ip' => '8.8.8.8', 'apiKey' => 'your_api_key_here', 'lang' => 'en' ]); echo $clock->now()->format('c');
🧩 Providers
You can define a custom provider like this:
use KrepyshSpec\IPros\AbstractProvider; use KrepyshSpec\IPros\Enums\ProviderRequestMethodEnum; use DateTimeImmutable; class MyProvider extends AbstractProvider { protected function getApiUrl(): string { return 'https://my-api.com/time'; } protected function getRequestMethod(): ProviderRequestMethodEnum { return ProviderRequestMethodEnum::GET; } protected function prepareApiUrl(string $apiUrl, array $data): ?string { return $apiUrl . '?ip=' . ($data['ip'] ?? ''); } protected function prepareResponse(array $response): DateTimeImmutable { return new DateTimeImmutable($response['dateTime']); } }
🛠️ Local Development
With PHP installed locally
# Clone the repository git clone https://github.com/krepysh-spec/ipros.git cd ipros # Install dependencies composer install # Run tests composer test
With Docker (if PHP not installed)
# Clone the repository git clone https://github.com/krepysh-spec/ipros.git cd ipros # Start development environment make up # Install dependencies make install # Run tests make test # Check code style make codestyle # Run mutation testing make infection
✅ Requirements
- PHP 8.1+
- Composer
统计信息
- 总下载量: 3
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-05-01