eclipxe/sepomexphp

墨西哥邮政服务PHP库(非官方版本)

v4.0.0 2023-07-01 06:17 UTC

This package is auto-updated.

Last update: 2024-08-30 01:14:36 UTC


README

Source Packagist PHP Version Support Latest Version Software License Build Status Reliability Maintainability Code Coverage Violations Total Downloads

这个库是墨西哥 SEPOMEX 数据的非官方版本。

由于这个库的主要用户是墨西哥人,所以项目的一些部分是西班牙语。无论如何,所有数据库、代码和其他信息都是英文。

安装

使用 composer 安装,不推荐使用其他方法!

composer require eclipxe/sepomexphp

使用方法

使用由库创建的 SQLite3 数据库文件

<?php
/** @var string $databaseFilename set the database file location */
$sepomex = \Eclipxe\SepomexPhp\SepomexPhp::createForDatabaseFile($databaseFilename);

// query a zip code
$zipcode = $sepomex->getZipCodeData('86100');

使用您自己的 PDO 连接

<?php
/** @var string $pdoString set the database connection using Pdo */
$pdoString = "...";

// create the SepomexPhp Object
$sepomex = new \Eclipxe\SepomexPhp\SepomexPhp(
    new \Eclipxe\SepomexPhp\PdoDataGateway\PdoDataGateway(
        new \PDO($pdoString)
    )
);

// query a zip code
$zipcode = $sepomex->getZipCodeData((int) $argv[1]);

此外,检查脚本文件 zipcode-info.php 和测试文件 ZipCodeDataTest.php

如果您只想从 SEPOMEX 下载源文件,请检查脚本文件 scripts/download.php

<?php
/**
 * @var string $destinationFile is the path where the destination file will be located. 
 */
$downloader = new \Eclipxe\SepomexPhp\Downloader\SymfonyDownloader();
printf("Download from %s to %s\n", $downloader::LINK, $destinationFile);
$downloader->downloadTo($destinationFile);

您可以使用自己的下载器,只需实现接口 DownloaderInterface

项目提供了以下实现

  • SymfonyDownloader:它使用 Symfony Browser Kit 执行下载(推荐)。
  • GuzzleDownloader:使用 Guzzle 和固定数据执行下载。
  • PhpStreamsDownloader:使用纯 PHP 函数和固定数据执行下载。

如果您想将 SEPOMEX 的源文件导入自己的 SQLite3 数据库,请检查 create-sqlite-from-raw.php

<?php
/**
 * @var PDO $pdo The PDO connection to your database.
 * @var string $sourceFile The path to the SEPOMEX database in TXT format. 
 */
$importer = new \Eclipxe\SepomexPhp\Importer\PdoImporter($pdo);
// drop tables if existed, create tables.
$importer->createStruct();
// perform data import
$importer->import($sourceFile);

如果您有自己的 Sepomex 数据集,则可以扩展此库,只需创建实现方法的 DataGatewayInterface 并从任何地方获取数据。

关于 SEPOMEX 信息(截至 2018-02-02)

Sepomex 以非常严格的条款分发其邮政编码数据库的第一行

《全国邮政编码目录》,由墨西哥邮政编制,免费提供给个人使用,不得进行全部或部分商业化和向第三方分发。

这意味着

  • 数据仅用于个人用途。
  • 不得将信息(全部或部分)分发给任何人(插入一个大 WTF!)。
  • 不得从信息中获利。

无论如何,数据源已经由墨西哥政府使用名为 LIBRE USO MX 的自由许可证发布,并取消了免责声明的任何限制。

如果您运行脚本 scripts/create-sqlite-from-raw.php,您将创建一个包含相同信息的 sqlite 数据库,但进行了规范化,如果不存在,脚本将下载源文件。

您可以在 docs/DATABASE.md(西班牙语)中找到有关原始源文件更多信息。

当前工作

现在您可以通过搜索墨西哥邮政编码,并获取以下信息

  • 所在州 Estado,例如 'Tabasco'。
  • 所在区 Delegación/Municipio,例如 'Centro'。
  • 位置列表 Colonias,每个位置包含
    • 位置名称,例如 '1 de mayo'。
    • 位置类型,例如 'Colonia' 或 'Unidad habitacional'。
    • 城市名称,例如 'Villahermosa'。

由于相同的邮政编码可以包括城市内部和城市外的一些地方,城市位于位置实体之下。是的,墨西哥就是这样运作的。

贡献

欢迎贡献!请阅读 CONTRIBUTING 获取详细信息,并别忘了查看 TODOCHANGELOG 文件。

许可证

eclipxe\sepomexphp 库版权所有 © Carlos C Soto,并使用 MIT 许可证(MIT)授权。更多信息请参阅 LICENSE

数据来源

由“Correos de México”发布的“Tabla de Códigos Postales y asentamientos humanos”。数据获取自