Ejemplo n.º 1
0
 /**
  * Constructeur.
  *
  * Ce constructeur est privé selon un système de
  * multiton, la propriété dbTable::_aInstances contenant
  * tous les objets instanciés via cette classe.
  *
  * @param unknown $_schema          Nom du schéma de données sur lequel seront collectées les informations
  * @param  String $_sNomTable       Nom de la table
  * @param  String $aConfig          Tableau où sont enregistrés les paramètres des tables.
  * @param  String $_aliasTable      Alias du nom de table
  * @throws Exception
  *
  * @todo    Comment intégrer les fonctions et autres procédures stockées...?
  */
 protected function __construct($_schema, $_sNomTable, $aConfig, $_aliasTable)
 {
     parent::__construct($aConfig);
     $this->_aConfigSchema = $aConfig;
     $this->_sNomTable = $_sNomTable;
     $this->_aliasTable = $_aliasTable;
     /**
      * Récupération des informations sur les colonnes de
      * la table.
      */
     if (array_key_exists($_sNomTable, $aConfig['tables'])) {
         $this->_aConfigTable = $aConfig['tables'][$_sNomTable];
         /**
          * Ici, on demande un objet sur une table.
          */
         $this->_aColonnes = $aConfig['tables'][$_sNomTable]['fields'];
         foreach ($this->_aColonnes as $k => $infos) {
             $this->_aCles[] = $k;
         }
         // $this->_aCles['alias'] = $_aliasTable;
         $this->_aPk = $aConfig['tables'][$_sNomTable]['key']['pk'];
         /**
          * S'il s'agit d'une table, on bloque l'accès en écriture sur
          * les clés primaires qui doivent être gérées en interne
          * par le SGBD.
          */
         $this->_bLockPk = true;
     } elseif (isset($aConfig['relations']) && array_key_exists($_sNomTable, $aConfig['relations'])) {
         $this->_aConfigTable = $aConfig['relations'][$_sNomTable];
         /**
          * Ici, on demande un objet sur une table relationnelle.
          */
         $this->_aColonnes = $aConfig['relations'][$_sNomTable]['fields'];
         foreach ($this->_aColonnes as $k => $infos) {
             $this->_aCles[] = $k;
         }
         // $this->_aCles['alias'] = $_aliasTable;
         $this->_aPk = $aConfig['relations'][$_sNomTable]['key']['pk'];
         /**
          * Dans une table relationnelle, la clé primaire étant
          * composée de clés étrangères, on débloque l'accès en
          * écriture des colonnes composant cette clé primaire
          * pour permettre l'ajout de lignes.
          */
         $this->_wr = true;
         $this->_bLockPk = false;
     } elseif (isset($aConfig['vues']) && array_key_exists($_sNomTable, $aConfig['vues'])) {
         /**
          * Ici, on demande un objet sur une vue.
          * Il convient donc de mettre en place un mécanisme
          * pour traiter les données en travaillant sur les
          * tables appropriées.
          */
         $this->_aColonnes = $aConfig['vues'][$_sNomTable]['fields'];
         foreach ($this->_aColonnes as $k) {
             $this->_aCles[] = $k;
         }
     } else {
         /**
          * Si on a trouvé nulle part de correspondance, on jette une exception.
          */
         $msg = "La table « " . $_sNomTable . " » est inexistante";
         throw new Exception($msg, E_USER_ERROR);
     }
     $this->_connect($aConfig['schema']);
 }
Ejemplo n.º 2
0
Archivo: vue.php Proyecto: jemdev/dbrm
 public function __construct($dbConf)
 {
     parent::__construct($dbConf);
 }