# Instalación

Requisitos

PHP FacturaE requiere PHP 8.2 o superior.

Extensiones PHP necesarias:

  • ext-openssl — Necesaria para firmas digitales XAdES-EPES y manejo de certificados
  • ext-dom — Necesaria para generación y manipulación de XML

Instalación vía Composer

composer require php-facturae/php-facturae

Verificar la instalación

<?php
require_once 'vendor/autoload.php';
use PhpFacturae\Invoice;
use PhpFacturae\Party;
$invoice = Invoice::create('TEST-001')
->seller(Party::company('B12345678', 'Empresa Test'))
->buyer(Party::company('B87654321', 'Empresa Cliente'))
->line('Producto de prueba', price: 100.00, vat: 21);
echo "✓ PHP FacturaE está correctamente instalado!\n";
echo "Número de factura: " . $invoice->getNumber() . "\n";

Autoloading

PHP FacturaE usa autoloading PSR-4:

  • PhpFacturae\Invoice mapea a src/Invoice.php
  • PhpFacturae\Party mapea a src/Party.php
  • PhpFacturae\Entities\Line mapea a src/Entities/Line.php

Dependencias de desarrollo

composer install --dev

Incluye PHPUnit 11.0+ y PHPStan 2.0+ (nivel 8).

# Ejecutar tests
vendor/bin/phpunit
# Ejecutar análisis estático
vendor/bin/phpstan analyse src --level=8

Solución de problemas

«ext-openssl is missing» — Instala php8.2-openssl (Ubuntu/Debian) o actívalo en php.ini (Windows).

«ext-dom is missing» — Instala php8.2-xml (Ubuntu/Debian).

«Class ‘PhpFacturae\Invoice’ not found» — Asegúrate de incluir vendor/autoload.php. Ejecuta composer dump-autoload si es necesario.

Opcional: Sellado de tiempo TSA

Para soporte de autoridad de sellado de tiempo (TSA), necesitarás ext-curl:

sudo apt-get install php8.2-curl