rockett / za-phone
Requires
- php: >=5.6.4
- laravel/framework: ^5.4
Requires (Dev)
- orchestra/testbench: ~3.0
README
💤 此包已退役。请使用 https://github.com/Propaganistas/Laravel-Phone。
南非电话号码的易用验证器和格式化工具。
安装
composer require rockett/za-phone
如果您使用的是 Laravel 5.5,服务提供程序(仅提供验证功能)将通过 package-discovery 自动检测。您可以通过向您的应用 composer.json
文件中添加以下内容来选择退出:
"extra": { "laravel": { "dont-discover": [ "rockett/za-phone" ] } },
如果您想使用验证,并且正在使用 Laravel 5.4,请将 Rockett\Toolkit\Providers\ZAPhoneServiceProvider::class
添加到您的 config/app.php
文件中的 providers
数组。
使用方法
首先,通过实时外观(无需添加到 aliases
)导入类
use Facades\Rockett\Toolkit\ZAPhone;
接下来,使用 check
方法来查看号码是否有效。如果返回 false
,则号码无效。否则,$phone
变量即可使用。
if (!$phone = ZAPhone::check('0125559999')) { // do something if the phone number is not valid }
输入格式
您可以为电话号码使用任何格式,因为它将删除不需要的任何内容。此包的目的是根据您的需求验证和格式化号码,因此应在直接用户输入(例如表单)上使用。以下是将被接受的格式示例
+27113330000
27 11 616 0223
011 323 1000
062525 9874
+27 (11) 525 9500
最终,gobbledygook 格式(+27 11/329.6200
)将被接受、删除并验证。但是,如果删除后的号码无效,则 check
将返回 false
。
输出格式
如果号码有效,您可以返回您选择的格式的电话号码。可用方法包括
print $phone->formatNational(); // 012 555 9999 print $phone->formatE164(); // +27125559999 print $phone->formatIntl(); // +27 12 555 9999 print $phone->formatRFC3966(); // +27-12-555-9999
您还可以使用另一个国家的退出码来格式化号码。这将在该号码前添加代码,显示从另一个国家拨打电话的方式。国家代码参数需要以 ISO 3166-1 alpha-3 格式指定。
print $phone->formatDialIn('USA'); // 011 27 125559999 from the United States print $phone->formatDialIn('AUS'); // 0011 27 125559999 from Australia print $phone->formatDialIn('COL'); // 00444 27 125559999 from Colombia print $phone->formatDialIn('RUS'); // 8p10 27 125559999 from Russia
注意:
p
仅表示呼叫者应在继续之前等待音调。
转换为字符串
将 $phone
实例转换为字符串时,它将默认为国内格式
print $phone; // 012 555 9999
国内格式的选项
您还可以向 formatNational
方法传递两个可选参数。
第一个参数,$landlineParenthises
,默认为 false
,确定是否将固定电话号码括在括号内
print $phone->formatNational(true); // (012) 555 9999
第二个参数,$hyphens
,也默认为 false
,确定是否使用连字符来分隔数字组。如果号码是固定电话并且 $landlineParenthises
设置为 true
,则连字符将分隔号码的最后两部分。在其他所有情况下,将使用连字符来分隔所有组。
print $phone->formatNational(true, true); // (012) 555-9999 // print $phone->formatNational(false, true); // 012-555-9999
获取器
偶尔,您可能需要访问数字的不同部分。您可以为此使用 number
、prefix
、three
和 four
获取器。但是请注意,number
和 prefix
中不会包含前导零。
print $phone->prefix; // 12
验证
该包还提供 规则 和验证器,并且每个都允许您指定用户提供的电话号码的可选格式。
'phone_number_field': 'required|zaphone', 'phone_number_field': ['required', Rule::zaphone()], 'phone_number_field': 'required|zaphone:national', 'phone_number_field': ['required', Rule::zaphone()->format('intl')],
当使用
Rule
方法时,不要忘记use Illuminate\Validation\Rule;
。注意,format()
的参数区分大小写,接受national
、intl
、E164
和RFC3966
。
说实话,由于该包的设计是为了验证可以转换为有效电话号码的任何输入,并根据您的应用需求(数据库存储等)对其进行格式化,因此强制格式并不是必需的。因此,对于大多数需求,只需简单地使用验证规则而不强制格式即可。
测试
测试由 Orchestra 的测试平台提供。要测试该包,只需导航到其目录,运行 composer install
然后运行 phpunit
。
需要更高级的功能?
ZA Phone,正如其名称所示,是专门为南非电话号码设计的,因此针对的是在南非环境中使用的应用。虽然其功能集相对有限,但对于大多数应用来说应该是足够的。
如果您在寻找更复杂且功能丰富的解决方案,请务必查看 Laravel Phone。