El archivo Init.php en FacturaScripts
El archivo Init.php es fundamental para el funcionamiento avanzado de los plugins en FacturaScripts. Este archivo permite definir procesos y acciones que se ejecutan automáticamente en distintos momentos del ciclo de vida del plugin, como la carga de la aplicación, activación, actualización o desactivación.
📂 Ubicación del archivo
Debes colocar el archivo Init.php en la raíz del directorio de tu plugin.
🧩 Estructura y métodos principales
La clase Init debe extender de InitClass, y proporciona tres métodos clave:
init(): Se ejecuta cada vez que se carga FacturaScripts (con el plugin activo). Utilízalo para cargar extensiones de modelos, extensiones de controladores, iniciar workers u otras funciones de inicialización.update(): Se ejecuta al activar el plugin y al actualizarlo (si está activo), permitiendo aplicar cambios en la estructura de datos o configuraciones necesarias para la nueva versión. Ten en cuenta que instalar el plugin sin activarlo no ejecuta este método.uninstall(): Se invoca al desactivar el plugin. En este método puedes realizar tareas de limpieza como eliminar datos, archivos asociados o modificar configuraciones.
📋 Ejemplo básico de Init.php
<?php
namespace FacturaScripts\Plugins\MyNewPlugin;
use FacturaScripts\Core\Template\InitClass;
class Init extends InitClass
{
public function init(): void
{
// Código que se ejecuta al cargar FacturaScripts si el plugin está activado
}
public function uninstall(): void
{
// Limpieza de datos o configuraciones al desactivar el plugin
}
public function update(): void
{
// Ajustes al activar o actualizar el plugin
}
}
🧰 Utilidades de InitClass
Además, InitClass ofrece algunos métodos de ayuda para usar dentro de init() o update():
loadExtension(): Carga una extensión de modelo o de controlador. Además de modelos y controladores concretos, admite clases base para extender varios a la vez:BusinessDocument,SalesDocument,PurchaseDocument(y sus líneas), o todos los controladoresEditControlleroListController.
public function init(): void
{
$this->loadExtension(new Extension\Model\Cliente());
}
updateTableData(): Vuelca de nuevo en la tabla los datos del archivo CSV correspondiente de la carpetaDatadel plugin. Útil enupdate()para refrescar datos predefinidos tras una actualización.
public function update(): void
{
$this->updateTableData('mi_tabla');
}
📦 Cómo usar Composer en un plugin
Si tu plugin va a utilizar librerías externas gestionadas con Composer, añade la siguiente línea justo después de declarar el namespace en Init.php. Esto asegura que se carguen automáticamente las dependencias definidas:
require_once __DIR__ . '/vendor/autoload.php';
Nota: Antes, ejecuta
composer initocomposer installdentro del directorio del plugin para generar el autoload correspondiente.
Ejemplo ampliado con Composer:
<?php
namespace FacturaScripts\Plugins\MyNewPlugin;
use FacturaScripts\Core\Template\InitClass;
require_once __DIR__ . '/vendor/autoload.php';
class Init extends InitClass
{
// Lógica de integración de tu plugin...
}
Consideraciones sobre composer.json
FacturaScripts requiere PHP 8.1 o superior. Para asegurar la compatibilidad, debes indicar la versión de PHP en tu archivo composer.json:
"config": {
"platform": {
"php": "8.1"
}
}