/** * 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']); }
public function __construct($dbConf) { parent::__construct($dbConf); }