liopoos/apple-device-mapper 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

liopoos/apple-device-mapper

最新稳定版本:v0.0.1

Composer 安装命令:

composer require liopoos/apple-device-mapper

包简介

A PHP library for bidirectional mapping between Apple device model identifiers and device names

README 文档

README

A PHP library for bidirectional mapping between Apple device model identifiers and device names.

PHP Version License

Overview

Apple Device Mapper provides an efficient way to convert between Apple device model identifiers (like iphone10,1) and human-readable device names (like iPhone 8 (Global)).

Installation

composer require liopoos/apple-device-mapper

Requirements

  • PHP >= 7.3

Quick Start

<?php

require 'vendor/autoload.php';

use Liopoos\AppleDeviceMapper\AppleDeviceMapper;
use Liopoos\AppleDeviceMapper\Entity\DeviceCategory;

$mapper = new AppleDeviceMapper();

// Get device entity
$device = $mapper->getDeviceByModel('iphone10,1');
echo $device->getName();      // "iPhone 8 (Global)"
echo $device->getCategory();  // "iPhone"

// Get devices by name (returns Collection)
$devices = $mapper->getDevicesByName('iPhone 8 (Global)');

// Get devices by category
$iPhones = $mapper->getDevicesByCategory(DeviceCategory::IPHONE);

// Check existence
if ($mapper->hasModel('iphone14,2')) {
    echo "Model exists";
}

API Reference

Core Methods

getDeviceByModel(string $model): AppleDevice

Get device entity by model identifier.

$device = $mapper->getDeviceByModel('iphone10,1');
echo $device->getModel();     // "iphone10,1"
echo $device->getName();      // "iPhone 8 (Global)"
echo $device->getCategory();  // "iPhone"

getDevicesByName(string $deviceName): Collection<AppleDevice>

Get all devices for a device name as a Collection.

$devices = $mapper->getDevicesByName('iPhone 8 (Global)');
$devices->each(function($device) {
    echo $device->getModel();
});

getFirstDeviceByName(string $deviceName): AppleDevice

Get the first device for a device name.

$device = $mapper->getFirstDeviceByName('iPhone 8 (Global)');

getAllDevices(): Collection<AppleDevice>

Get all devices as a Collection.

$devices = $mapper->getAllDevices();
$iPhones = $devices->filter(fn($d) => $d->getCategory() === 'iPhone');

getDevicesByCategory(string $category): Collection<AppleDevice>

Get devices by category.

use Liopoos\AppleDeviceMapper\Entity\DeviceCategory;

$iPhones = $mapper->getDevicesByCategory(DeviceCategory::IPHONE);
$iPads = $mapper->getDevicesByCategory(DeviceCategory::IPAD);

Query Methods

hasModel(string $model): bool

Check if a model identifier exists.

if ($mapper->hasModel('iphone10,1')) {
    // Model exists
}

hasDeviceName(string $deviceName): bool

Check if a device name exists.

if ($mapper->hasDeviceName('iPhone 8 (Global)')) {
    // Device name exists
}

getAllDeviceNames(): array<string>

Get all unique device names.

getAllModels(): array<string>

Get all model identifiers.

getStatistics(): array

Get statistics about the device mapping.

$stats = $mapper->getStatistics();
// ['total_models' => 265, 'total_device_names' => 256, ...]

Device Categories

Available device categories:

  • DeviceCategory::IPHONE - iPhone devices
  • DeviceCategory::IPAD - iPad devices
  • DeviceCategory::IPOD - iPod devices
  • DeviceCategory::WATCH - Apple Watch devices
  • DeviceCategory::APPLE_TV - Apple TV devices
  • DeviceCategory::MAC - Mac devices
  • DeviceCategory::HOMEPOD - HomePod devices
  • DeviceCategory::VISION_PRO - Apple Vision Pro
  • DeviceCategory::IBRIDGE - iBridge devices
  • DeviceCategory::OTHER - Other devices

Updating Device Data

Device data is stored in resources/devices.json and automatically compiled during installation.

To update:

  1. Update resources/devices.json with latest data
  2. Run the build script:
    php build.php

The build script generates category-specific data files in src/Data/ directory.

Development

Running Tests

vendor/bin/phpunit

Project Structure

src/
├── AppleDeviceMapper.php       # Main mapper class
├── Data/
│   ├── DataLoader.php          # Lazy loader with iterator pattern
│   ├── iPhoneData.php          # iPhone device data
│   ├── iPadData.php            # iPad device data
│   ├── MacData.php             # Mac device data
│   └── ...                     # Other category data files
└── Entity/
    ├── AppleDevice.php         # Device entity class
    └── DeviceCategory.php      # Category constants

Acknowledgments

Device data sourced from IPSW.me API

License

MIT License

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-12-31