PHP code example of irwinlopez1023 / mex-core

1. Go to this page and download the library: Download irwinlopez1023/mex-core library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

irwinlopez1023 / mex-core example snippets


use Irwinlopez1023\MexCore\MexCore;

$p = MexCore::Persona()->fromData('SOSR650222MPLSNC03', 'MARIA DEL ROCIO', 'SOSA', 'SANCHEZ');

echo $p->toPrimerNombre();   // MARIA DEL ROCIO  (no se parte en MARIA + DEL ROCIO)
echo $p->toEdad();           // edad a partir de la CURP
echo $p->toEstado()->toNombre(); // Puebla
var_dump($p->tieneCurpValida()); // true
var_dump($p->coincideConCurp()); // true: los nombres cuadran con la CURP

use Irwinlopez1023\MexCore\MexCore;

$estado = MexCore::Estado()->fromCurp('HEGG560427MVZRRL04'); // CURP completa
$estado = MexCore::Estado()->fromCurp('SP');                 // o solo el código
$estado = MexCore::Estado()->fromNumero(24);
$estado = MexCore::Estado()->fromNumero('09');               // con cero a la izquierda
$estado = MexCore::Estado()->fromAbreviatura('SLP');
$estado = MexCore::Estado()->fromNombre('San Luis Potosí');

echo $estado->toNumero();            // 24
echo $estado->toNumeroFormateado();  // 24  (y '09' para la CDMX)
echo $estado->toCurp();              // SP
echo $estado->toAbreviatura();       // SLP
echo $estado->toIso();               // SLP
echo $estado->toNombre();            // San Luis Potosí

var_dump($estado->esExtranjero());   // false

$bc = MexCore::Estado()->fromCurp('XXXX000101HBCXXX00');

$bc->toAbreviatura(); // 'BC'   <- dos letras, rompe una API que espera tres
$bc->toIso();         // 'BCN'  <- ISO 3166-2:MX

MexCore::Estado()->fromIso('BCN')->toNumero();          // 2
MexCore::Estado()->fromAbreviatura('BCN')->toNumero();  // 2
MexCore::Estado()->desde('BCN')->toNumero();            // 2
MexCore::Estado()->desde('BC')->toNumero();             // 2

MexCore::Estado()->fromIso('BC');    // InvalidStateException
MexCore::Estado()->fromIso('TAMPS'); // InvalidStateException

$abr = MexCore::Estado()->fromNombre('Nuevo León')->toAbreviatura(); // NL
$num = MexCore::Estado()->fromAbreviatura('CDMX')->toNumero();       // 9
$nom = MexCore::Estado()->fromCurp('VARG740228HSPLSN07')->toNombre(); // San Luis Potosí

MexCore::Estado()->desde(24)->toNombre();                    // San Luis Potosí
MexCore::Estado()->desde('SP')->toNombre();                  // San Luis Potosí
MexCore::Estado()->desde('SLP')->toNombre();                 // San Luis Potosí
MexCore::Estado()->desde('VARG740228HSPLSN07')->toNombre();  // San Luis Potosí

MexCore::Estado()->intentarDesde('Narnia'); // null, no lanza
MexCore::Estado()->existe('PUE');           // true
MexCore::Estado()->existe(99);              // false

MexCore::Estado()->fromNombre('Coahuila de Zaragoza')->toNumero();            // 5
MexCore::Estado()->fromNombre('Michoacán de Ocampo')->toNumero();             // 16
MexCore::Estado()->fromNombre('Veracruz de Ignacio de la Llave')->toNumero(); // 30
MexCore::Estado()->fromNombre('Querétaro de Arteaga')->toNumero();            // 22

$cdmx = MexCore::Estado()->fromNumero(9);

$cdmx->toArray();
// ['numero' => 9, 'nombre' => 'Ciudad de México', 'curp' => 'DF',
//  'abreviatura' => 'CDMX', 'iso' => 'CMX']

json_encode($cdmx);
// {"numero":9,"nombre":"Ciudad de México","curp":"DF","abreviatura":"CDMX","iso":"CMX"}

// equals() compara datos, no instancias: da igual por dónde entró.
MexCore::Estado()->fromAbreviatura('SLP')->equals(MexCore::Estado()->fromNumero(24)); // true

foreach (MexCore::Estado()->listar() as $e) {
    echo $e->toNumeroFormateado() . ' ' . $e->toNombre() . PHP_EOL;
}

$persona = MexCore::Persona()->fromData(
    curp: 'VARG740228HSPLSN07',
    nombres: 'JUAN CARLOS',
    primerApellido: 'VALENCIA',
    segundoApellido: 'RAMIREZ',
);

$persona = MexCore::Persona()->fromArray([
    'curp'            => 'VARG740228HSPLSN07',
    'nombres'         => 'JUAN CARLOS',
    'primerApellido'  => 'VALENCIA',
    'segundoApellido' => 'RAMIREZ',
]);

echo $persona->toPrimerNombre();    // JUAN
echo $persona->toSegundoNombre();   // CARLOS
echo $persona->toPrimerApellido();  // VALENCIA
echo $persona->toSegundoApellido(); // RAMIREZ
echo $persona->toNombreCompleto();  // JUAN CARLOS VALENCIA RAMIREZ
echo $persona->toCurp();            // VARG740228HSPLSN07
print_r($persona->toArray());

echo $persona->toNombreUnico();              // JUAN CARLOS
echo $persona->toNombreCompletoInvertido();  // VALENCIA RAMIREZ, JUAN CARLOS
echo $persona->toIniciales();                // JCVR
print_r($persona->toNombres());              // ['JUAN', 'CARLOS']
echo json_encode($persona);                  // implementa JsonSerializable

$p = MexCore::Persona()->fromData('VARG740228HSPLSN07', 'JUAN CARLOS ALBERTO', 'VALENCIA', 'RAMIREZ');

echo $p->toSegundoNombre(); // CARLOS ALBERTO
print_r($p->toNombres());   // ['JUAN', 'CARLOS', 'ALBERTO']

$p = MexCore::Persona()->fromData('AAAA000101HBCXXX00', 'MA. GUADALUPE', 'TORRES', 'FLORES');
echo $p->toPrimerNombre(); // MA. GUADALUPE

$p = MexCore::Persona()->fromData('AAAA000101HBCXXX00', 'MA. GUADALUPE', 'TORRES', 'FLORES', mantenerPunto: false);
echo $p->toPrimerNombre(); // MA GUADALUPE

print_r(MexCore::Persona()->separarNombres('MARIA DEL ROCIO ALEJANDRA'));
// ['MARIA DEL ROCIO', 'ALEJANDRA']

$query = MexCore::Persona()
    ->withConectores(['DE', 'DEL', 'LA'])
    ->withAbreviaturas(['MA', 'J']);

$query->separarNombres('MARIA DE LOS ANGELES');
// ['MARIA DE LOS', 'ANGELES']  <- LOS ya no es conector, cierra el bloque

$p = MexCore::Persona()->fromData('VARG740228HSPLSN07', 'JUAN CARLOS', 'VALENCIA', 'RAMIREZ');

$c = $p->combinar();
echo $c->toPrimerNombre();  // JUAN CARLOS
echo $c->toSegundoNombre(); // (vacío)
var_dump($c->estaCombinado()); // true

$v = $c->separar();
echo $v->toSegundoNombre();   // CARLOS
var_dump($v->equals($p));     // true

$p = MexCore::Persona()->fromData('SOSR650222MPLSNC03', 'MARIA DEL ROCIO', 'SOSA', 'SANCHEZ');

echo $p->toSexo();                              // M
echo $p->toFechaNacimiento()->format('Y-m-d');  // 1965-02-22
echo $p->toEdad();                              // edad al día de hoy
echo $p->toEdad(new DateTimeImmutable('2020-01-01')); // 54
echo $p->toDigitoVerificador();                 // 3
var_dump($p->tieneCurpValida());                // true

$ok = MexCore::Persona()->fromData('SOSR650222MPLSNC03', 'MARIA DEL ROCIO', 'SOSA', 'SANCHEZ');
var_dump($ok->coincideConCurp()); // true

// Paterno y materno invertidos: derivaria SASR/NSC, no SOSR/SNC
$mal = MexCore::Persona()->fromData('SOSR650222MPLSNC03', 'MARIA DEL ROCIO', 'SANCHEZ', 'SOSA');
var_dump($mal->coincideConCurp()); // false

$estado = $persona->toEstado();

echo $estado->toNombre();      // San Luis Potosí
echo $estado->toAbreviatura(); // SLP
echo $estado->toNumero();      // 24
echo $estado->toCurp();        // SP

// Todo en una línea
MexCore::Persona()->fromData('VARG740228HSPLSN07', 'JUAN CARLOS', 'VALENCIA', 'RAMIREZ')
    ->toEstado()
    ->toAbreviatura(); // SLP

use Irwinlopez1023\MexCore\Curp;

var_dump(Curp::esValida('SOSR650222MPLSNC03')); // true
echo Curp::digitoVerificador('SOSR650222MPLSNC0'); // 3
echo Curp::sexo('SOSR650222MPLSNC03');             // M
echo Curp::fechaNacimiento('SOSR650222MPLSNC03')->format('Y-m-d'); // 1965-02-22

echo Curp::prefijoDesde('MARIA DEL ROCIO', 'SOSA', 'SANCHEZ');     // SOSR
echo Curp::consonantesDesde('MARIA DEL ROCIO', 'SOSA', 'SANCHEZ'); // SNC

use Irwinlopez1023\MexCore\InvalidStateException;

try {
    MexCore::Estado()->fromCurp('AAAA000101HZZXXX00'); // la entidad ZZ no existe
} catch (InvalidStateException $e) {
    echo $e->getMessage();
}

foreach ($renglones as $r) {
    $estado = MexCore::Estado()->intentarDesde($r['entidad']);

    if ($estado === null) {
        $rechazados[] = $r;
        continue;
    }

    $limpios[] = $r + ['clave' => $estado->toNumero()];
}
bash
php test.php          # las dos suites, un solo resumen
php test_persona.php  # solo Personas
php test_estados.php  # solo Estados