定制 ernestoch/rif-php 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ernestoch/rif-php

Composer 安装命令:

composer require ernestoch/rif-php

包简介

Librería PHP para validar, formatear y generar números RIF (Registro de Información Fiscal) de Venezuela

README 文档

README

PHP Version Tests License Packagist Version

Una librería PHP profesional para validar, formatear y generar números RIF (Registro de Información Fiscal) de Venezuela.

✨ Características

  • Validación completa de números RIF según algoritmo oficial
  • Cálculo del dígito verificador con algoritmo verificados
  • Soporte para todos los tipos de RIF (V, E, J, P, G, C)
  • Formateo profesional para presentación
  • Generación de RIFs válidos para testing
  • 100% type-hinted y compatible con PHP 8.3+
  • Cobertura completa de tests
  • PSR-4 y estándares modernos de PHP

📦 Instalación

composer require ernestoch/rif-php

Probar instalación

php -r "require 'vendor/autoload.php'; echo ErnestoCh\Rif\Rif::isValid('V113502963') ? '✅ Instalación exitosa!' : '❌ Error';"

🚀 Uso Rápido

<?php

require_once 'vendor/autoload.php';

use ErnestoCh\Rif\Rif;

// Validación simple
if (Rif::isValid('V113502963')) {
    echo "RIF válido!";
}

// Validación con manejo de excepciones
try {
    $rif = Rif::create('J000029679');
    echo "RIF: " . $rif->getRaw();
    echo "Tipo: " . $rif->getType()->getDescription();
    echo "Número: " . $rif->getNumber();
    echo "Dígito verificador: " . $rif->getCheckDigit();
} catch (ErnestoCh\Rif\Exceptions\RifValidationException $e) {
    echo "Error: " . $e->getMessage();
}

// Validación de RIFs conocidos
$knownRifs = [
    'V113502963', // RIF personal
    'G200001100', // Banco Central de Venezuela
    'J000029679', // Banco Provincial
];

foreach ($knownRifs as $rifString) {
    if (Rif::isValid($rifString)) {
        echo "$rifString es válido\n";
    }
}

🎨 Formateadores

La librería incluye múltiples formateadores para diferentes contextos:

<?php

use ErnestoCh\Rif\Rif;
use ErnestoCh\Rif\Formatters\RifFormatter;

$rif = Rif::create('J000029679');

// Diferentes formatos disponibles
echo RifFormatter::standard($rif);        // J-00002967-9
echo RifFormatter::spaced($rif);          // J 00 002 967 9
echo RifFormatter::withDescription($rif); // J-00002967-9 (Persona Jurídica)
echo RifFormatter::dotted($rif);          // J-2.967-9
echo RifFormatter::legal($rif);           // R.I.F. J-00002967-9

// Método de conveniencia
echo $rif->format('standard');            // J-00002967-9
echo $rif->format('spaced');              // J 00 002 967 9

Casos de uso comunes:

Interfaces de usuario: spaced o dotted para mejor legibilidad

Bases de datos: compact o database para almacenamiento

Facturas electrónicas: invoice (formato SENIAT)

Documentos legales: legal para contratos y documentos formales

Mostrar información completa: withDescription para interfaces administrativas

🎲 Generador de RIFs Válidos

Genera RIFs válidos para testing y desarrollo:

<?php

use ErnestoCh\Rif\Rif;
use ErnestoCh\Rif\Types\RifType;

// Generar un RIF aleatorio
$rif = Rif::generate();
echo $rif->getRaw(); // Ej: V123456789

// Generar un tipo específico
$rif = Rif::generate(RifType::LEGAL);
echo $rif->getRaw(); // Ej: J987654321

// Generar múltiples RIFs
$rifs = Rif::generateMultiple(5);
foreach ($rifs as $rif) {
    echo $rif->format() . "\n";
}

// Generar RIF secuencial (útil para testing)
$rif = Rif::generateSequential(42, RifType::NATURAL);
echo $rif->getRaw(); // V00000042X

// Usar el generador directamente
use ErnestoCh\Rif\Services\RifGenerator;

$rif = RifGenerator::generateOneOfEachType();
foreach ($rif as $type => $rifInstance) {
    echo "{$type}: {$rifInstance->format()}\n";
}

Casos de uso del generador:

Testing: Generar datos de prueba para tus tests unitarios

Desarrollo: Rellenar bases de datos de desarrollo

Demostraciones: Crear ejemplos para documentación o presentaciones

Prototipos: Probar interfaces sin necesidad de RIFs reales

🔍 Validador de Formato

Valida la estructura de un RIF sin verificar el dígito verificador:

<?php

use ErnestoCh\Rif\Rif;
use ErnestoCh\Rif\Validators\FormatValidator;

// Validar estructura completa (pero sin dígito verificador)
if (Rif::isValidFormat('J123456789')) {
    echo "Formato válido";
}

// Validar usando el validador directamente
if (FormatValidator::validateStructure('V113502963')) {
    echo "Estructura válida";
}

// Validación parcial (prefijo y cuerpo)
if (FormatValidator::validatePartial('J123456789')) {
    echo "Prefijo y cuerpo válidos";
}

// Validar componentes individuales
if (FormatValidator::isValidPrefix('V')) {
    echo "Prefijo válido";
}

if (FormatValidator::isValidBody('12345678')) {
    echo "Cuerpo válido";
}

// Extraer el tipo de RIF
$type = FormatValidator::extractType('J123456789');
if ($type) {
    echo "Tipo: " . $type->getDescription();
}

// Obtener detalles de validación para feedback al usuario
$details = Rif::validateFormat('X12A');
if (!$details['is_valid']) {
    foreach ($details['errors'] as $error) {
        echo "Error: $error\n";
    }
    foreach ($details['suggestions'] as $suggestion) {
        echo "Sugerencia: $suggestion\n";
    }
}

Casos de uso del validador de formato:

Validación en tiempo real: En formularios, validar mientras el usuario escribe

Feedback inmediato: Indicar errores de formato sin esperar a la validación completa

Limpieza de datos: Verificar datos antes de procesarlos

Clasificación: Identificar el tipo de RIF antes de validar completamente

🧪 Ejecución de Tests

# Ejecutar tests
composer test

# Análisis estático de código
composer analyse

# Verificación de estándares de código
composer lint

📚 Documentación

Consulta la documentación completa para más ejemplos y API reference.

🤝 Contribuciones

Las contribuciones son bienvenidas. Por favor:

Fork el proyecto

Crea una rama para tu feature (git checkout -b feature/AmazingFeature)

Commit tus cambios (git commit -m 'Add some AmazingFeature')

Push a la rama (git push origin feature/AmazingFeature)

Abre un Pull Request

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para detalles.

🏢 Uso en Producción

Esta librería está siendo utilizada en producción y ha sido verificada con RIFs reales del sistema venezolano.

ernestoch/rif-php 适用场景与选型建议

ernestoch/rif-php 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 41 次下载、GitHub Stars 达 4, 最近一次更新时间为 2025 年 10 月 18 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「fiscal」 「venezuela」 「validacion」 「seniat」 「contribuyente」 「rif」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 ernestoch/rif-php 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 ernestoch/rif-php 我们能提供哪些服务?
定制开发 / 二次开发

基于 ernestoch/rif-php 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 41
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 4
  • 点击次数: 25
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 4
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-10-18