freshwork/chilean-bundle

一个带有智利验证、常用变量等的PHP composer包(RUT、IVA等)。适用于Laravel 5。大智利,棒棒哒 :)

2.1.4 2023-01-03 19:23 UTC

README

一个包含智利验证、常用变量等的PHP composer包。智利万岁 Mier...

本包包括

  • R.U.T.验证
  • 更多功能即将推出...

安装

步骤1:Composer

在命令行中运行

composer require freshwork/chilean-bundle 

如果你不使用Laravel,那么你已经完成了。

步骤2:Laravel服务提供者

如果你使用的是Laravel 5.5,本包支持自动发现。因此,你可以跳过此步骤。

对于Laravel 5.4或以下版本

将此行添加到你的config/app.php文件中的providers数组中

'providers' => [
    ...
    Freshwork\ChileanBundle\Laravel\ChileanBundleServiceProvider::class
];

然后你可以添加RUT外观

'aliases' => [
    ...
    'Rut'   => Freshwork\ChileanBundle\Laravel\Facades\Rut::class
];

用法

基础用法

你可以使用RUT对象,但我建议使用Rut::parse()方法。

include('vendor/autoload.php'); //Enable composer autloading if not using laravel
use Freshwork\ChileanBundle\Rut;

$rut = new Rut('11.111.111', '1');
$rut->validate(); //true

(new Rut('12345678', '5'))->validate(); //true

parse()方法

这是使用对象的最佳方式。它将自动分离验证码(Dígito verrificador)和其余号码。

    Rut::parse('11.111.111-1')->validate(); //true
    Rut::parse('11111111-1')->validate(); //true
    Rut::parse('12.345.678-5')->validate(); //true
    Rut::parse('123456785')->validate(); //true
    Rut::parse('1.23.45.6.7.8-5')->validate(); //true. It escapes all the dots and dashes.

set()方法

这是(new Rut($number, $vn))的快捷方式

Rut::set('10.123.123', '5'); //return true

validate() & isValid()方法

validate()是isValid()的别名

Rut::parse('12345678-5')->isValid(); //true

无效的R.U.T.格式

如果R.U.T.无效,它将返回false

Rut::parse('12.345.678-9')->validate(); //false

无效的R.U.T.格式

如果R.U.T.格式错误,它将抛出Freshwork\ChileanBundle\Exceptions\InvalidFormatException

Rut::parse('12.3k5.6L8-9')->validate(); //throw Freshwork\ChileanBundle\Exceptions\InvalidFormatException
Rut::set('12.345.678')->validate(); // throw exception. We didn't set the verification number
静默模式

你可以防止对象抛出InvalidFormatException,因此validate()将仅返回false,使用quiet()方法。

Rut::parse('12.3k5.6L8-9')->quiet()->validate(); //return false. No exception

你可以使用use_exceptions()重新启用异常

calculateVerificationNumber()方法

你可以获取RUT的正确验证码。注意,我们正在将一个参数传递给set()方法。我们没有定义验证码。

Rut::set('12.345.678')->calculateVerificationNumber(); //return 5
Rut::set('12.345.678-9')->calculateVerificationNumber(); //return 5
Rut::parse('12.345.678-9')->calculateVerificationNumber(); //return 5

这个类基于以下简单但高效的函数: http://www.dcc.uchile.cl/~mortega/microcodigos/validarrut/php.php

format()方法

以定义的格式将Rut对象作为字符串返回。

Rut::parse('123456789')->format(); //return 12.345.678-9. It doesn't validates. It just formats.
Rut::parse('123456785')->format(Rut::FORMAT_COMPLETE); //return 12.345.678-5.
Rut::parse('123456785')->format(Rut::FORMAT_WITH_DASH); //return 12345678-5.
Rut::parse('123456785')->format(Rut::FORMAT_ESCAPED); //return 123456785.
Rut::parse('12.345.678-5')->format(Rut::FORMAT_ESCAPED); //return 123456785.

normalize()方法

如果你在数据库中保存RUT,我建议保存归一化的rut字符串。此方法是对->format(Rut::FORMAT_ESCAPED)的别名

Rut::parse('12.345.678-5')->normalize(); //return '123456785'

toArray()方法

以定义的格式将Rut对象作为字符串返回。

Rut::parse('12.345.678-5')->toArray(); //return ['12345678', '5']

fix()方法

修复当前的RUT。它将取RUT的号码部分(不带验证码),并计算正确的验证码,然后用这个结果更新验证码。

Rut::parse('12.345.678-9')->fix()->format(); //return '12.345.678-5'

//Set a new rut without setting any verification number
Rut::set('12345678')->fix()->format(); //return '12.345.678-5'

//Set a new rut with an invalid verification number that will be replaced
Rut::set('12345678', '6')->fix()->format(); //return '12.345.678-5'

Rut::parse('12.345.678-9')->validate(); //return false
Rut::parse('12.345.678-9')->fix()->validate(); //return true

vn()和number()方法

你可以使用这些方法设置和获取RUT号码和验证码。如果没有传递任何参数给这些方法,它将返回相应的值。否则,它将设置值。

//Getter
Rut::parse('12.345.678-9')->vn(); //return '9'
Rut::parse('12.345.678-9')->number(); //return '12345678'

//Setter
Rut::parse('12.345.678-9')->vn('7')->format(); //return '12.345.678-7'
Rut::parse('12.345.678-9')->number('11111111')->format(); //return '11.111.111-9'
Rut::set()->number('12.345.678')->vn('9')->format() //return '12.345.678-9'

Laravel

验证

如果你使用服务提供者,你可以使用Laravel的验证系统通过cl_rut验证ruts。

...
class ClientController extends Controller{
    ...
    use ValidateRequests;
    ...
    public function store(Request $request) {
        $this->validate($request, [
            `nombre' => 'required|min:2',
            'email' => 'required|email',
            'rut'   => 'required|cl_rut'
        ]);
        //Do stuff
    }
}

示例

RUT生成器

<?php

use \Freshwork\ChileanBundle\Rut;

//We loop 10 times
for($i = 0; $i < 10; $i++)
{
    //generate random number between 1.000.000 and 25.000.000
    $random_number = rand(1000000, 25000000);

    //We create a new RUT wihtout verification number (the second paramenter of Rut constructor)
    $rut = new Rut($random_number);

    //The fix method calculates the verification number
    echo $rut->fix()->format() . " \n";
}
//Output (random)

17.062.139-5
18.815.969-9
14.287.543-8
13.864.006-K
16.724.081-K
20.465.345-3
13.294.672-8
11.102.906-7
8.333.479-7
7.661.557-8

此生成器生成介于1.000.000和25.000.000之间的十个随机RUT。

更简短的语法

<?php
for($i = 0; $i < 10; $i++)
    echo \Freshwork\ChileanBundle\Rut::set(rand(1000000, 25000000))->fix()->format() . "\n";

许可证和Postalware

你可以免费使用此包,没有任何限制,尽管它很受欢迎,但我们实施了一个“Postalware”许可证。如果你在生产中使用此包并且喜欢它的功能,非常感谢你发送一张你所在城市/地区的明信片、感谢信或超级8电影。

地址名称:智利,Providencia,Gonzalo De Spirito Providencia 229

测试

您可以通过以下命令运行测试:./vendor/bin/codecept run

贡献

请随时通过以下邮箱联系我:[gonzalo@freshworkstudio.com](mailto:gonzalo@freshworkstudio.com)。