TSLDataModel
in
implements
TSLJsonAble
Esta es la clase base para definir los modelos de datos , esta clase permite como cualquier objeto puro con getters y setters o como una clase normal pero sin acceso directo a sus componentes, ya que siempre pasara por los getter y setters gracias al uso de __get and __set magic methods,.
Todos los modelos deberan tener al menos un id y una version de registro,valor que se usara para ver si hay cambios previo a una actualizacion del mismo.
Por Ejemplo :
class test extends TLSDataModel { protected $_var1; protected $_var2; public function setVar1($var1) { $this->_var1 = $var1; } public function getVar2() { return $this->_var2; } } $clstest = new test(); $clstest->var1 = 'test'; // llamara al metodo setVar1() $clstest->var2 = 'test'; // hara una asignacion directa usando el magic method __set echo $clstest->var1; // // Retornara directamente el valor de $_var1 usando el magic methosd __get echo $clstest->var2; // // Llamara al metodo getVar2()
Desde luego se puede llamar a los getters y setters en forma tradicional.
Table of Contents
$id | identificador unico del registro que representa este modelo. | int|string |
---|---|---|
$versionId | identificador unico de la version del modelo en la persistencia, un cambio en este valor representara que el registro representado por este modelo ha sido modificado. | int|string |
$usuario | Usuario que creo el modelo en la persistencia. | string |
$usuario_mod | Ultimo usuario que modifico el modelo en la persistencia. | string |
$activo | Por default TRUE , indica si el modelo esta activo en la persistencia | bool |
$fecha_creacion | DateTime | |
$fecha_modificacion | DateTime | |
__construct() | Constructor | mixed |
__set() | Override del metodo magico __get | void |
__get() | Primero trata de llamar el metodo basado en el nombre del parametro , si el metodo no existe tratara de setear directamente el valor. | mixed |
setOptions() | Este metodo setea los atributos del modelo de datos basado en un arreglo. | void |
getAsArray() | Este metodo retorna todos los atributos en forma de un arreglo de pares key -> value Para usos especificos puede hacerse override. | array |
getId() | Retorna el unique id que identifica a este data model | mixed |
setId() | Setea el unique id de el data model. | mixed |
getUniqueCode() | Hay casos en que el codigo unico no es el id y el id se usa por eficiencia en los joins o en otras cosas el id no se usa ya que se usa data migrada y se requeire que el codigo sea unico. | mixed |
getVersionId() | Retorna el numero de version del record que representa este Data Model. | int |
setVersionId() | Setea la version del record que represnta el data model, este solo debe ser seteado desde la persistencia nunca desde el cliente. | void |
getUsuario() | string | |
setUsuario() | Setea el identificador de usuario. | void |
get_Fecha_creacion() | DateTime | |
set_Fecha_creacion() | Setea la fecha de creacion del registro. | void |
get_Usuario_mod() | string | |
set_Usuario_mod() | Setea el usuario que modifica el registro. | void |
get_Fecha_modificacion() | DateTime | |
set_Fecha_modificacion() | Setea la fecha de modificacion del registro. | void |
setActivo() | Si se desea que un modelo este inactivo pero no eliminado este campos era util para eso. | void |
getActivo() | Retorna TRUE si esta activo. | bool |
getPKAsArray() | Retorna un arreglo con las llaves primarias del modelo. | array |
isPKSequenceOrIdentity() | Muchas veces el id es una secuencia o identity , si ese fuera el caso el tratamiento durante digamos un insert es diferente , ya que luego del insert hay que determinar este valor , en cambio si el id es una llave primaria ingresada previo al update (osea no es identity o sequence) el valor de la llave unica es conocida previamente. | bool |
toJSON() | Convierte el objeto a JSON | string |
getAsBool() | Evalua el parametro y devuelve un valor booleano luego del analisis del mismo , esto es ya que muchas persistencias de datos en especial las bases de datos devuelven diferentes valores como : f , F,T,Y etc para representar un booleano en la base de datos. | bool |
Properties
$id
identificador unico del registro que representa este modelo.
protected
int|string
$id
$versionId
identificador unico de la version del modelo en la persistencia, un cambio en este valor representara que el registro representado por este modelo ha sido modificado.
protected
int|string
$versionId
$usuario
Usuario que creo el modelo en la persistencia.
protected
string
$usuario
$usuario_mod
Ultimo usuario que modifico el modelo en la persistencia.
protected
string
$usuario_mod
$activo
Por default TRUE , indica si el modelo esta activo en la persistencia
protected
bool
$activo
= \TRUE
$fecha_creacion
protected
DateTime
$fecha_creacion
$fecha_modificacion
protected
DateTime
$fecha_modificacion
Methods
__construct()
Constructor
public
__construct(
[ $options :
array
= null ]
)
: mixed
Si un arreglo de nombres - valores es enviado estos son usados para inicializar los atributos de la clase.
IMPORTANTE : cada atributo de la clase debera ser declarada protected en las subclases
Por ejemplo si el arreglo es ('field1'=>'val1','field2'=>'val2') , la subclase debera tener como atributos protegidos $field1 and $field2.
Parameters
- $options : array = null
arreglo con los pares que representan el Campo-Valor
Return values
mixed__set()
Override del metodo magico __get
public
__set(
$name :
string
, $value :
mixed
)
: void
Primero trata de llamar el metodo basado en el nombre del parametro , si el metodo no existe tratara de setear directamente el valor.
IMPORTANTE : El metodo setter si es creado en la subclase necesita usar el Camel case , por ejemplo $this->attr = 'test' tratara de llamar al setter setAttr.
Si el metodo no existe tratara de accesar el atributo , por eso estos deben ser protected.
Parameters
- $name : string
con el nombre del attribute
- $value : mixed
El valor a asignar al atributo
__get()
Primero trata de llamar el metodo basado en el nombre del parametro , si el metodo no existe tratara de setear directamente el valor.
public
__get(
$name :
string
)
: mixed
IMPORTANTE : El metodo getter si es creado en la subclase necesita usar el Camel case , por ejemplo echo $this->attr tratara de llamar al getter getAttr.
Si el metodo no existe tratara de accesar el atributo , por eso estos deben ser protected.
Parameters
- $name : string
string con el nombre del attribute
Return values
mixedsetOptions()
Este metodo setea los atributos del modelo de datos basado en un arreglo.
public
setOptions(
$options :
array
)
: void
Para cada elemento se buscara primero si existe el metodo detter , de no haberlo trata de hacerlo directamente.
Parameters
- $options : array
un arreglo con los elementos conteniendo los pares attr->value .
getAsArray()
Este metodo retorna todos los atributos en forma de un arreglo de pares key -> value Para usos especificos puede hacerse override.
public
getAsArray(
)
: array
Tags
Return values
array —with the properties.
getId()
Retorna el unique id que identifica a este data model
public
getId(
)
: mixed
Return values
mixed —con el identificador
setId()
Setea el unique id de el data model.
public
setId(
$id :
mixed
)
: mixed
Parameters
- $id : mixed
con el identificador unico, no NULL!!
Return values
mixedgetUniqueCode()
Hay casos en que el codigo unico no es el id y el id se usa por eficiencia en los joins o en otras cosas el id no se usa ya que se usa data migrada y se requeire que el codigo sea unico.
public
getUniqueCode(
)
: mixed
En estos casos el codigo unico difirere del id , debera sobreescribirse este metodo en esos casos.
Return values
mixed —con el codigo unico que identifica al registro.
getVersionId()
Retorna el numero de version del record que representa este Data Model.
public
getVersionId(
)
: int
Return values
int —con la version correspodiente a la version del datamodel en la persistencia.
setVersionId()
Setea la version del record que represnta el data model, este solo debe ser seteado desde la persistencia nunca desde el cliente.
public
setVersionId(
$versionId :
int
)
: void
Parameters
- $versionId : int
con el valor de la version del registor
getUsuario()
public
getUsuario(
)
: string
Return values
string —con el identificador del usuario
setUsuario()
Setea el identificador de usuario.
public
setUsuario(
$usuario :
string
)
: void
Parameters
- $usuario : string
get_Fecha_creacion()
public
get_Fecha_creacion(
)
: DateTime
Return values
DateTime —con la fecha de creacion del registor
set_Fecha_creacion()
Setea la fecha de creacion del registro.
public
set_Fecha_creacion(
$fecha_creacion :
DateTime
)
: void
Parameters
- $fecha_creacion : DateTime
get_Usuario_mod()
public
get_Usuario_mod(
)
: string
Return values
string —con el identificador de usuario que modifica
set_Usuario_mod()
Setea el usuario que modifica el registro.
public
set_Usuario_mod(
$usuario_mod :
string
)
: void
Parameters
- $usuario_mod : string
get_Fecha_modificacion()
public
get_Fecha_modificacion(
)
: DateTime
Return values
DateTime —con la fecha de modificacion del registro.
set_Fecha_modificacion()
Setea la fecha de modificacion del registro.
public
set_Fecha_modificacion(
$fecha_modificacion :
DateTime
)
: void
Parameters
- $fecha_modificacion : DateTime
setActivo()
Si se desea que un modelo este inactivo pero no eliminado este campos era util para eso.
public
setActivo(
$activo :
bool
)
: void
Importante no se usa el hint por problemas en la interpretacion del bool sobre todo cuando lo recuperamos de otro objeto y este es por un ejemplo un string con 'false' seria tomado como true
Parameters
- $activo : bool
, 1 o true , 0 o false
getActivo()
Retorna TRUE si esta activo.
public
getActivo(
)
: bool
Return values
bool —TRUE verdadero FALSE falso
getPKAsArray()
Retorna un arreglo con las llaves primarias del modelo.
public
getPKAsArray(
)
: array
Implementacion default.
Return values
array —con las llaves primarias del modelo
isPKSequenceOrIdentity()
Muchas veces el id es una secuencia o identity , si ese fuera el caso el tratamiento durante digamos un insert es diferente , ya que luego del insert hay que determinar este valor , en cambio si el id es una llave primaria ingresada previo al update (osea no es identity o sequence) el valor de la llave unica es conocida previamente.
public
isPKSequenceOrIdentity(
)
: bool
Es recomendable que si luego de hacer un insert se requiere leer el ultimo valor insertado para colocarlo en el modelo se llame a este metodo para verificar si es una llave secuenciada o identity ya que de ser asi getId() o getUniqueCode() tendran como valor null.
LAs previsiones de como resolver este problema se deja para las clases que efectuan las tareas sobre el modelo.
Por default retornara null suponiendo que el id es un campo digamos digitado y no automatico, el modelo final debera hacer un override a este metodo de no ser asi.
Return values
bool —true si el id es secuencia o identity o false si no lo es
toJSON()
Convierte el objeto a JSON
public
toJSON(
)
: string
Return values
string —conteniendo la represemtacion de data model en JSON
getAsBool()
Evalua el parametro y devuelve un valor booleano luego del analisis del mismo , esto es ya que muchas persistencias de datos en especial las bases de datos devuelven diferentes valores como : f , F,T,Y etc para representar un booleano en la base de datos.
protected
static getAsBool(
$value :
mixed
)
: bool
Parameters
- $value : mixed