<?php

class SuperOpcionesWidget {

    public $configuracion = NULL;
    public $elementos = array();

    function __construct() {
        //Siempre hay que inicializar la configuración
        $this->configuracion = new VoidObject();
        //El primer parámetro de este elemento siempre ha de ser un array con las opciones
        if (count(func_get_args()) > 0) {
            $primer_parametro = func_get_args();
            /*echo('<pre class="SuperOpcionesWidget">');
            var_dump($primer_parametro);
            echo("</pre>");*/
            //De aquí hay que sacar los parámetros
            if (is_array($primer_parametro[0])) {
                foreach ($primer_parametro[0] as $clave => $valor) {
                    $this->configuracion->$clave = $valor;
                }
            }
        }
        //$this->add(func_get_args());
    }

    function __set($name, $value) {
        $this->$name = $value;
    }

    function __get($name) {
        $retorno = NULL;
        if (isset($this->$name)) {
            $retorno = $this->$name;
        }
        return($retorno);
    }

    public function addProperty($clave = NULL, $valor = NULL) {
        if ($clave != NULL) {
            $this->configuracion->$clave = $valor;
        }
    }

    public function addElement() {
        if (count(func_get_args()) > 0) {
            $primer_parametro = func_get_args();
            //De aquí hay que sacar los parámetros
            if (is_array($primer_parametro[0])) {
                $posicion = count($this->elementos);
                $this->elementos[$posicion] = new stdClass(); //Creamos en plan estandar class en lugar de nulo
                //$this->elementos[$posicion] = array(); //Cambiado el 30/11/2016 porque la nueva versión de PHP no permite cambiar de sdclass a array
                foreach ($primer_parametro[0] as $clave => $valor) {
                    $this->elementos[$posicion]->$clave = $valor;
                }
            }
        }
        /* $numero_elementos = 0;
          foreach($campos as $clave => $valor){
          if(is_array($valor)){
          $cantidad_campos = count($valor);
          $numero_elementos = ($numero_elementos == 0) ? $cantidad_campos : $numero_elementos;
          if($cantidad_campos < $numero_elementos){
          $numero_elementos = $cantidad_campos;
          }
          }else{
          $numero_elementos = 1;
          break;
          }
          }
          if($numero_elementos > 0){

          } */
    }

    public function getElements() {
        $retorno = array();
        $arrayElementos = $this->elementos;
        foreach ($arrayElementos as $clave => $valor) {
            //Cada "valor" es un objeto sdtclass
            $retorno[] = get_object_vars($valor);
        }
        return($retorno);
    }

}

?>