Files
roi-theme/src/Component/Domain/Exceptions/InvalidComponentException.php
FrankZamora 90de6df77c Fase-01: Preparación del entorno y estructura inicial
- Verificación de entorno XAMPP (PHP 8.0.30, Composer 2.9.1, WP-CLI 2.12.0)
- Configuración de Composer con PSR-4 para 24 namespaces
- Configuración de PHPUnit con 140 tests preparados
- Configuración de PHPCS con WordPress Coding Standards
- Scripts de backup y rollback con mejoras de seguridad
- Estructura de contextos (admin/, public/, shared/)
- Schemas JSON para 11 componentes del sistema
- Código fuente inicial con arquitectura limpia en src/
- Documentación de procedimientos de emergencia

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 16:34:49 -06:00

99 lines
2.7 KiB
PHP

<?php
declare(strict_types=1);
namespace ROITheme\Component\Domain\Exceptions;
/**
* InvalidComponentException - Excepción de Dominio para componentes inválidos
*
* RESPONSABILIDAD: Representar errores de validación de reglas de negocio de componentes
*
* CUÁNDO LANZAR:
* - Nombre de componente inválido (formato, longitud)
* - Configuración inválida (CTA URL sin CTA text, colores mal formateados)
* - Visibility inválida (combinaciones no permitidas)
* - Content inválido (URLs mal formateadas, textos vacíos cuando requeridos)
* - Cualquier violación de invariantes del dominio
*
* USO:
* ```php
* if (empty($name)) {
* throw new InvalidComponentException('Component name cannot be empty');
* }
* ```
*
* @package ROITheme\Domain\Component\Exceptions
*/
class InvalidComponentException extends \DomainException
{
/**
* Constructor
*
* @param string $message Mensaje de error
* @param int $code Código de error (opcional)
* @param \Throwable|null $previous Excepción anterior (opcional)
*/
public function __construct(
string $message,
int $code = 0,
?\Throwable $previous = null
) {
parent::__construct($message, $code, $previous);
}
/**
* Crear excepción para nombre inválido
*
* @param string $name
* @param string $reason
* @return self
*/
public static function invalidName(string $name, string $reason): self
{
return new self(
sprintf('Invalid component name "%s": %s', $name, $reason)
);
}
/**
* Crear excepción para configuración inválida
*
* @param string $componentName
* @param string $reason
* @return self
*/
public static function invalidConfiguration(string $componentName, string $reason): self
{
return new self(
sprintf('Invalid configuration for component "%s": %s', $componentName, $reason)
);
}
/**
* Crear excepción para CTA inválido
*
* @param string $componentName
* @return self
*/
public static function ctaUrlRequiresText(string $componentName): self
{
return new self(
sprintf('Component "%s" has CTA URL but missing CTA text', $componentName)
);
}
/**
* Crear excepción para color inválido
*
* @param string $colorKey
* @param string $value
* @return self
*/
public static function invalidColor(string $colorKey, string $value): self
{
return new self(
sprintf('Invalid color format for "%s": "%s". Expected hexadecimal (e.g., #000000)', $colorKey, $value)
);
}
}