PHP and its behavior with classes

2

I have created some models that extend all of a ModelBase, although cos attributes are in each child, I have created a DaoBase for common operations, and inherit the different Daos, all with PDO, and now the problem. When reading a record, part of the data remains in attributes that it marks as of ModeloBase, although this has none. This is the var_dump of the read object. Observe the last fields ... that never existed in the Base.

  

object (models \ Image) # 6 (15) {     ["image_id": "models \ Image": private] = >     string (2) "27"     ["image_name": "models \ Image": private] = >     string (23) "2018-10-03_23h00_31.png"     ["image_time": "models \ Image": private] = >     string (1) "6"     ["image_order": "models \ Image": private] = >     string (1) "1"     ["image_family": "models \ Image": private] = >     string (1) "L"     ["image_value": "models \ Image": private] = >     string (1) "2"     ["imagen_horaInicio": "modelos \ Imagen": private] = >     NULL     ["imagen_horaFin": "modelos \ Imagen": private] = >     NULL     ["image_dias": "models \ Image": private] = >     string (1) "*"     ["image_caduca": "models \ Image": private] = >     string (19) "2019-12-02 00:00:00"     ["image_lastUpdate": "models \ Image": private] = >     NULL     ["model": "models \ ModelBase": private] = >     string (6) "Image"     ["image_home"] = >     string (8) "01:01:00"     ["imagen_horafin"] = >     string (8) "22:00:00"     ["image_lastupdate"] = >     string (10) "2018-12-02"

ModeloBase Class

<?php
namespace modelos;
require_once (KIOSKO_RAIZ . 'service/RutinasXml.php');
use service\RutinasXml;

abstract Class  ModeloBase
{
    private $modelo;

    public function __construct(string $modelo){
        $this->setModelo($modelo);
    }

    /**
     * @return mixed
     */
    public function getModelo()
    {
        return $this->modelo;
    }

    /**
     * @param mixed $modelo
     */
    public function setModelo($modelo)
    {
        $this->modelo = $modelo;
    }

    public abstract function getId():int;
    public abstract function setId(int $id_valor):void;

    public function getXml(): string
    {
        $miXML=RutinasXml::arrayToXML($this->getArray(), $this->getModelo());
        return $miXML;
    }
}

Class Image

<?php
declare(strict_types = 1);
namespace modelos;

use DateTime;
require_once (KIOSKO_RAIZ . 'modelos/ModeloBase.php');

class Imagen extends ModeloBase
{

    private $imagen_id;

    private $imagen_nombre;

    private $imagen_tiempo;

    private $imagen_orden;

    private $imagen_pertenencia;

    // G-grupo, C-cliente, L-Local
    private $imagen_valor;

    private $imagen_horaInicio;

    private $imagen_horaFin;

    // *,Lu,Ma,Mie,Ju,Vi,Sa,Do
    private $imagen_dias;


    private $imagen_caduca;

    // Dia y hora
    private $imagen_lastUpdate;

    public function __construct(int $imagen_id = null, string $imagen_nombre = null, int $imagen_tiempo = null, int $imagen_orden = null, string $imagen_pertenencia = null, int $imagen_valor = null, int $imagen_horaInicio = null, int $imagen_horaFin = null, string $imagen_dias = null, int $imagen_caduca = null, int $imagen_lastUpdate = null)
    {
        parent::__construct("Imagen");
        if (func_num_args() > 0) {
            $this->setImagen_id($imagen_id);
            $this->setImagen_nombre($imagen_nombre);
            $this->setImagen_tiempo($imagen_tiempo);
            $this->setImagen_orden($imagen_orden);
            $this->setImagen_pertenencia($imagen_pertenencia);
            $this->setImagen_valor($imagen_valor);
            $this->setImagen_horaInicio($imagen_horaInicio);
            $this->setImagen_horaFin($imagen_horaFin);
            $this->setImagen_dias($imagen_dias);
            $this->setImagen_caduca($imagen_caduca);
            $this->setImagen_lastUpdate($imagen_lastUpdate);
        }
    }

.... The var_dump

public function getImagen_horaFin_String(): String
    {

          //echo "getHoraFin=";
          var_dump($this);

        if (null == $this->imagen_horaFin)
            return '23:00:00';
            return date(FORMATO_HORA, $this->imagen_horaFin);
    }
    ...

DaoImagen:
  function listxTipo(string $tipo,int $valor):array
    {
        $stmt = $this->pdo->prepare(static::SELECT_TIPO);
        $stmt->bindValue(':imagen_pertenencia', $tipo);
        $stmt->bindValue(':imagen_valor', $valor);

        $lista = $this->acceder($stmt);

        return $lista;
    }

DaoBase

    function acceder(PDOStatement $stmt):array
    {
        $stmt->setFetchMode(PDO::FETCH_CLASS ,  $this->modelo );
        $stmt->execute();
        return $stmt->fetchAll();
    }
    
asked by migarcia 02.12.2018 в 20:55
source

0 answers