<?php

class Registre {
	private $aso_stock = array();
	private static $registre = null;
	private $suivant;
	private $titre;
	private $espaces = array();
	private $donnees = array();
	private $squelettes;

	public static function getRegistre()
    {
    	if (is_null(Registre::$registre)) {
			Registre::$registre = new Registre;
		}
		return Registre::$registre;
    }

	function set($intitule, $objet)
	{
		if (is_array($objet) && isset($this->aso_stock[$intitule])) {
			$this->aso_stock[$intitule] = array_merge((array)$this->aso_stock[$intitule], (array)$objet);
			$message = "Le tableau $intitule présent dans le registre a été fusionné avec un nouveau tableau de même intitulé !";
			trigger_error($message, E_USER_WARNING);
		} else {
			$this->aso_stock[$intitule] = $objet;
		}
	}

	function get($intitule)
	{
		if (isset($this->aso_stock[$intitule])) {
			return $this->aso_stock[$intitule];
		}
		return false;
	}

	function detruire($intitule)
	{
		if (isset($this->aso_stock[$intitule])) {
			unset($this->aso_stock[$intitule]);
		}
	}

	public function etrePresent($intitule)
	{
		if(isset($this->aso_stock[$intitule])){
			return true;
		}
		return false;
	}

    // Titre
	public function getTitre()
	{
		return $this->titre;
	}
	public function setTitre($t)
	{
		$this->titre = $t;
	}

	// Espaces De Nomage
	public function setEspaces($e)
	{
		$this->espaces = $e;
	}
	public function ajouterEspace($cle, $val)
	{
		$this->espaces[$cle] = $val;
	}
	public function getEspaces($cle = null)
	{
		if ($cle != null) {
			if (isset($this->espaces[$cle])) {
				return $this->espaces[$cle];
			}
		} else {
			return $this->espaces;
		}
	}

	// Donnees
	public function setDonnees($d)
	{
		$this->donnees = $d;
	}
	public function ajouterDonnee($cle, $val)
	{
		if (is_array($val) && isset($this->donnees[$cle])) {
			$this->donnees[$cle] = array_merge((array)$this->donnees[$cle], $val);
			trigger_error('Fusion de données pour la clé : '. $cle, E_USER_NOTICE);
		} else {
			$this->donnees[$cle] = $val;
		}
	}
	public function getDonnees($cle = null)
	{
		if (!is_null($cle)) {
			if (isset($this->donnees[$cle])) {
				return $this->donnees[$cle];
			}
		} else {
			return $this->donnees;
		}
	}

	// Squelettes
	public function setSquelettes($s)
	{
		$this->squelettes = $s;
	}
	public function ajouterSquelette($cle, $val)
	{
		$this->squelettes[$cle] = $val;
	}
	public function getSquelettes($cle = null)
	{
		if ($cle != null) {
			if (isset($this->squelettes[$cle])) {
				return $this->squelettes[$cle];
			}
			return false;
		} else {
			return $this->squelettes;
		}
	}
}
?>