fourfiveone / address-formatter
一个简单、灵活的地址格式化包。
这个包的官方仓库似乎已经消失,因此该包已被冻结。
1.0.4
2018-01-31 16:41 UTC
Requires
- php: >=5.4.0
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,并根据需要调整换行符和标点符号。任何存在或缺失的字段组合都应正确显示。