La clase Tools
La clase Tools de FacturaScripts es una herramienta útil que ofrece funciones estáticas comunes para facilitar el desarrollo. No olvide añadir el correspondiente use de la clase.
use FacturaScripts\Core\Tools;
📝 Formateo de texto
ascii()- Convierte caracteres especiales a ASCII.kebab()- Transforma texto a formato kebab-case.slug()- Genera slugs para URLs. Admite el separador como segundo parámetro y la longitud máxima como tercero.textBreak()- Trunca texto con elipsis, con la longitud máxima como segundo parámetro.noHtml()yfixHtml()- Escapan y des-escapan los caracteres HTML peligrosos (<,>, comillas).
echo Tools::ascii('Cañón'); // Canon
echo Tools::kebab('MiNuevoPlugin'); // mi-nuevo-plugin
echo Tools::slug('Mi Nuevo Plugin'); // mi-nuevo-plugin
echo Tools::textBreak('Un texto muy largo para mostrar en una lista', 20); // Un texto muy lar...
echo Tools::noHtml('<b>hola</b>'); // &lt;b&gt;hola&lt;/b&gt;
📅 Fechas y tiempo
date(),dateTime(),hour()- Devuelven la fecha (d-m-Y), fecha y hora (d-m-Y H:i:s) u hora (H:i:s), de la fecha indicada o del momento actual si no se indica nada.dateOperation(),dateTimeOperation()- Realizan operaciones con fechas ('+1 day', '-2 months'...).timeToDate(),timeToDateTime()- Conversión de timestamps a fechas.
echo Tools::date(); // 12-06-2026
echo Tools::date('2026-01-30'); // 30-01-2026
echo Tools::dateTime(); // 12-06-2026 18:30:57
echo Tools::hour(); // 18:30:57
echo Tools::dateOperation('12-06-2026', '+1 month'); // 12-07-2026
echo Tools::timeToDate(1750000000); // 15-06-2025
💰 Números y monedas
number()- Formatea números con los decimales y separadores configurados.money()- Formatea cantidades monetarias con el símbolo de la divisa.round()- Redondea con los decimales configurados.decimals()- Devuelve el número de decimales configurado.bytes()- Convierte bytes a unidades legibles (KB, MB, GB).floatCmp()- Compara números flotantes de forma segura.
echo Tools::number(1234.567); // 1 234.57
echo Tools::money(1234.567); // 1 234.57 €
echo Tools::money(1234.567, 'USD'); // 1 234.57 $
echo Tools::round(1234.567); // 1234.57
echo Tools::bytes(1048576); // 1.00 MB
if (Tools::floatCmp($total, 100.0)) {
// $total es 100, comparado de forma segura
}
📂 Sistema de archivos
folder()- Construye rutas a partir de la carpeta de la instalación.folderCheckOrCreate(),folderCopy(),folderDelete()- Operaciones con directorios.folderScan(),folderSize()- Listan el contenido y calculan el tamaño de directorios.
$path = Tools::folder('MyFiles', 'Public'); // /ruta/a/facturascripts/MyFiles/Public
Tools::folderCheckOrCreate($path); // crea la carpeta si no existe
foreach (Tools::folderScan($path) as $fileName) {
// recorremos los archivos de la carpeta
}
⚙️ Configuración
config()- Obtiene constantes del config.php. Para la clavedb_namebusca las constantesdb_name,DB_NAMEyFS_DB_NAME.settings()- Lee una opción de la configuración (panel de control), indicando grupo, clave y valor por defecto.settingsSet(),settingsSave()- Modifican y guardan opciones de la configuración.settingsClear()- Descarta los cambios no guardados y limpia la caché de opciones.siteUrl()- Devuelve la URL base de la instalación.
$dbName = Tools::config('db_name');
$codalmacen = Tools::settings('default', 'codalmacen');
// modificamos y guardamos una opción
Tools::settingsSet('default', 'codalmacen', '2');
Tools::settingsSave();
echo Tools::siteUrl(); // https://miempresa.com/facturascripts
🛠️ Utilidades
trans()- Traduce textos, con soporte de parámetros.lang()- Devuelve una instancia del traductor, útil para traducir a un idioma concreto.log()- Devuelve una instancia del log, opcionalmente sobre un canal concreto.password()- Genera una contraseña aleatoria (mínimo 8 caracteres, garantiza letras y números).randomString()- Genera una cadena alfanumérica aleatoria.
echo Tools::trans('products'); // Productos
echo Tools::trans('items-added-correctly', ['%num%' => 50]); // 50 elementos añadidos correctamente
echo Tools::lang('en_EN')->trans('products'); // Products
Tools::log()->info('mensaje informativo');
Tools::log('mi-canal')->error('mensaje de error en el canal mi-canal');
echo Tools::password(12); // contraseña aleatoria de 12 caracteres
echo Tools::randomString(20); // cadena aleatoria de 20 caracteres