Rut Chileno =========== [![Build Status](https://travis-ci.org/mnavarrocarter/chilean-rut.svg?branch=master)](https://travis-ci.org/mnavarrocarter/chilean-rut) [![Maintainability](https://api.codeclimate.com/v1/badges/c93bd4d894722c404cfd/maintainability)](https://codeclimate.com/github/mnavarrocarter/chilean-rut/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/c93bd4d894722c404cfd/test_coverage)](https://codeclimate.com/github/mnavarrocarter/chilean-rut/test_coverage) Esta librería implementa una clase Rut como un *value object* inmutable, incluyendo una api de validación flexible y extendible. Además, posee un validador para `symfony/validator`, un *form type* para `symfony/form` y un *type* para `doctrine/dbal`. Sólo es compatible con PHP 7.1 o superior. ## Instalación Esta libería funciona con composer: ``` composer require mnavarrocarter/chilean-rut ``` ## Uso Simplemente instancia una nueva clase con un rut en cualquier formato: ```php rutChecker = $rutChecker; } /** * @param Rut $rut */ public function validate(Rut $rut) : void { // Por debajo, esta clase ficticia haría una llamada a un web service preguntando // si el Rut existe. if ($this->rutChecker->doesRutExist($rut->format())) { return; } throw new InvalidRutException($rut, 'This rut does not exist'); } } ``` > NOTA: La implementación de cualquier validador DEBE arrojar un InvalidRutException cuando el Rut no es válido. De lo contrario, el Rut se toma como válido. ### Usando múltiples validadores Proveemos un `ChainRutValidator` que puedes usar para validar un rut contra múltiples validadores. Esto permite ejecutar cadenas de validación, como ver primero si un rut es válido algorítmicamente antes de verificarlo contra un web service. Usarlo es simple: ```php validate($rut); ``` ### Formateando Ruts a String Una vez creado el objeto Rut, puedes formatearlo a string en el formato que tu quieras. Esto se hace a través del método format y cómo parámetro acepta el valor de una de las constantes FORMAT_ de la clase Rut. ```php format(Rut::FORMAT_CLEAR); // Va a imprimir 342442234 echo $rut->format(Rut::FORMAT_READABLE); // Va a imprimir 34.244.223-4 echo $rut->format(Rut::FORMAT_HYPHENED); // Va a imprimir 34244223-4 echo $rut->format(Rut::FORMAT_HIDDEN); // Va a imprimir 34.***.***-4 ``` ### Utilidades Esta librería provee una clase llamada `CorrelativeUtils` que tiene algunas utilidades interesantes. Posee tres métodos: ```php