fourfiveone/address-formatter

一个简单、灵活的地址格式化包。

这个包的官方仓库似乎已经消失,因此该包已被冻结。

1.0.4 2018-01-31 16:41 UTC

This package is not auto-updated.

Last update: 2020-04-26 16:06:49 UTC


README

一个简单、灵活的地址格式化包。

目录

简介

这个包的起源是试图找到一个简单的地址格式化器,它允许变量数量的街道行。其他包要么没有变量数量的街道行的能力,要么允许任意最大数量的街道行。这个包目前仅支持美国格式的地址,但希望将来能扩展到其他格式。

此包根据GPL v3.0授权。有关更多信息,请参阅LICENSE.txt文件。

文档

基本用例

use FourFiveOne\AddressFormatter\AddressFormatter

...

$formatter = new AddressFormatter;

$formatter->set('recipiant', 'Elwood Blues');
$formatter->set('street', '1060 W. Addison');
$formatter->set('city', 'Chicago');
$formatter->set('state', 'IL');
$formatter->set('postal_code', '60613');

echo $formatter->format();

---

Outputs:

Elwood Blues
1060 W. Addison
Chicago, IL 660613

地址被分解成以下键

  • 收件人
  • 街道
  • 城市
  • 邮政编码
  • 国家

如果将无效的键传递给函数之一,将抛出InvalidKeyException。

获取

可以使用以下方式获取单个字段

$formatter->get($key);

设置

可以使用以下方式设置单个字段

$formatter->set($key, $value);

有一些小事情可以让你更容易地使用。'收件人'和'street'键可以有多个行,并在类中作为数组存储。你可以传入一个字符串或一个数组来设置这两个键中的任何一个。例如,以下两种情况都有效

$formatter->set('street', '1060 W. Addison');
$formatter->set('street', ['1060 W. Addison', 'Apt. 1']);

通常,地址行在数据库中以单独的列存储,如address_1、address_2等。有一个辅助函数可以逐行向街道数组添加一行

$dbResult = [
    'address_1' => '1060 W. Addison',
    'address_2' => 'Apt. 1',
];

foreach( $dbResult as $key => $value ) {
    switch($key) {
    case 'address_1':
    case 'address_2':
        $formatter->addStreetLine($value);
        break;

    ...

    }
}

这同样适用于收件人字段。

格式化

要显示格式化的地址,只需输出format()函数的返回值

echo $formatter->format();

format函数会考虑某些字段是否为null,并根据需要调整换行符和标点符号。任何存在或缺失的字段组合都应正确显示。