rdtvaacar/phonenumber
Composer 安装命令:
composer require rdtvaacar/phonenumber
包简介
Phone number library
README 文档
README
A phone number library for PHP.
This library is a thin wrapper around giggsey/libphonenumber-for-php, itself a port of Google's libphonenumber.
It provides an equivalent functionality, with the following implementation differences:
PhoneNumberis an immutable class; it can be safely passed around without having to worry about the risk for it to be changed;PhoneNumberis not just a mere data container, but provides all the methods to parse, format and validate phone numbers; it transparently encapsulatesPhoneNumberUtil.
Installation
This library is installable via Composer:
composer require brick/phonenumber
Requirements
This library requires PHP 7.1 or later. for PHP 5.6 and PHP 7.0 support, use version 0.1.
Project status & release process
While this library is still under development, it is well tested and should be stable enough to use in production environments.
The current releases are numbered 0.x.y. When a non-breaking change is introduced (adding new methods, optimizing existing code, etc.), y is incremented.
When a breaking change is introduced, a new 0.x version cycle is always started.
It is therefore safe to lock your project to a given release cycle, such as 0.2.*.
If you need to upgrade to a newer release cycle, check the release history for a list of changes introduced by each further 0.x.0 version.
Quick start
All the classes lie in the Brick\PhoneNumber namespace.
To obtain an instance of PhoneNumber, use the parse() method:
- Using an international number:
PhoneNumber::parse('+336123456789'); - Using a national number and a country code:
PhoneNumber::parse('01 23 45 67 89', 'FR');
Validating a number
The parse() method is quite permissive with numbers; it basically attempts to match a country code,
and validates the length of the phone number for this country.
If a number is really malformed, it throws a PhoneNumberParseException:
use Brick\PhoneNumber\PhoneNumber; use Brick\PhoneNumber\PhoneNumberParseException; try { $number = PhoneNumber::parse('+333'); } catch (PhoneNumberParseException $e) { // 'The string supplied is too short to be a phone number.' }
In most cases, it is recommended to perform an extra step of validation with isValidNumber() or isPossibleNumber():
if (! $number->isPossibleNumber()) { // a more lenient and faster check than `isValidNumber()` } if (! $number->isValidNumber()) { // strict check relying on up-to-date metadata library }
As a rule of thumb, do the following:
- When the number comes from user input, do a full validation:
parse()and catchPhoneNumberParseException, then callisValidNumber()(orisPossibleNumber()for a more lenient check) if no exception occurred; - When the number is later retrieved from your database, and has been validated before, you can just perform a blind
parse().
Formatting a number
Basic formatting
You can use format() with constants from the PhoneNumberFormat class:
$number = PhoneNumber::parse('+41446681800'); $number->format(PhoneNumberFormat::E164); // +41446681800 $number->format(PhoneNumberFormat::INTERNATIONAL); // +41 44 668 18 00 $number->format(PhoneNumberFormat::NATIONAL); // 044 668 18 00 $number->format(PhoneNumberFormat::RFC3966); // tel:+41-44-668-18-00
Formatting to call from another country
You may want to present a phone number to an audience in a specific country, with the correct international
prefix when required. This is what formatForCallingFrom() does:
$number = PhoneNumber::parse('+447123456789'); $number->formatForCallingFrom('GB'); // 07123 456789 $number->formatForCallingFrom('FR'); // 00 44 7123 456789 $number->formatForCallingFrom('US'); // 011 44 7123 456789
Number types
In certain cases, it is possible to know the type of a phone number (fixed line, mobile phone, etc.), using
the getNumberType() method, which returns a constant from the PhoneNumberType class:
PhoneNumber::parse('+336123456789')->getNumberType(); // PhoneNumberType::MOBILE PhoneNumber::parse('+33123456789')->getNumberType(); // PhoneNumberType::FIXED_LINE
If the type is unknown, the PhoneNumberType::UNKNOWN value is returned.
Check the PhoneNumberType class for all possible values.
Number information
You can extract the following information from a phone number:
$number = PhoneNumber::parse('+447123456789'); echo $number->getRegionCode(); // GB echo $number->getCountryCode(); // 44 echo $number->getNationalNumber(); // 7123456789
Example numbers
You can get an example number for a country code and an optional number type (defaults to fixed line). This can be useful to use as a placeholder in an input field, for example:
echo PhoneNumber::getExampleNumber('FR'); // +33123456789 echo PhoneNumber::getExampleNumber('FR', PhoneNumberType::MOBILE); // +33612345678
The return type of getExampleNumber() is a PhoneNumber instance, so you can format it as you like:
echo PhoneNumber::getExampleNumber('FR')->formatForCallingFrom('FR'); // 01 23 45 67 89
If no example phone number is available for the country code / number type combination, a PhoneNumberException is thrown.
rdtvaacar/phonenumber 适用场景与选型建议
rdtvaacar/phonenumber 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 278 次下载、GitHub Stars 达 0, 最近一次更新时间为 2019 年 08 月 28 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「phone」 「phonenumber」 「brick」 「phone number」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 rdtvaacar/phonenumber 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 rdtvaacar/phonenumber 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 rdtvaacar/phonenumber 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
统计信息
- 总下载量: 278
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-08-28
