Guía para Migrar Modelos de FacturaScripts 2017 a 2018
Desde FacturaScripts 2018, hemos adoptado espacios de nombres, autoloading y notación CamelCase. Por ello, es necesario renombrar tus modelos siguiendo estas nuevas pautas: la primera letra del nombre en mayúscula y sin guiones bajos.
Procedimiento de Renombrado
Ejemplo Antes de la Migración
<?php
class my_model extends fs_model
{
...
}
Ejemplo Después de la Migración
<?php
namespace FacturaScripts\Plugins\NOMBRE_PLUGIN\Model;
use FacturaScripts\Core\Model\Base;
class MyModel extends Base\ModelClass
{
use Base\ModelTrait;
}
Funciones Obligatorias
Los modelos ahora requieren conocer el nombre de la tabla y de la clave primaria. Debes implementar las funciones tableName() y primaryColumn().
public static function primaryColumn()
{
// Sustituye 'id' por el nombre de la columna que es la clave primaria
return 'id';
}
public static function tableName()
{
// Sustituye 'my_table' por el nombre de la tabla
return 'my_table';
}
Eliminación del Constructor
En versiones anteriores, existía un constructor extenso:
public function __construct($data = false)
{
parent::__construct('my_table');
if ($data) {
$this->id = $this->intval($data['id']);
...
} else {
$this->id = null;
...
}
}
Ahora, la función loadFromData() sustituye la parte 'if' y clear() reemplaza el 'else'. Implementa 'clear()' si necesitas valores por defecto:
public function clear()
{
parent::clear();
$this->fecha = Tools::date();
$this->hora = Tools::hour();
}
Simplificación del Código
FacturaScripts 2018 facilita un desarrollo más rápido y eficiente. Elimina funciones que ya están implementadas por defecto, tales como:
construct()
get()
y derivadosexists()
save()
delete()
test()
all()
y derivadosurl()
Consulta más acerca de operaciones comunes con modelos en nuestra documentación.
Uso de la Clase Tools
Las funciones no_html()
y random_string()
ahora residen en Core\Tools
. Añade el use
adecuado y llama a las funciones con la sintaxis:
// Coloca debajo del namespace
use FacturaScripts\Core\Tools;
...
public function test()
{
$this->random = Tools::randomString(99);
$this->observaciones = Tools::noHtml($this->observaciones);
}