コード例 #1
0
	/**
	 * Cette méthode retourne un objet DatabaseInterface (Couche d'abstraction de connexion à la base de données)
	 *
	 * @param String $connection_name nom de la connexion à la base de données défini dans le fichier database.conf.php
	 * @return DatabaseInterface
	 */
	public function getConnexion($connection_name){
		global $_CONST;
		$pool = $_CONST["CONNECTION"][$connection_name]["POOL"];
		$dbname = $_CONST["CONNECTION"][$connection_name]["DB_NAME"];
		$critical = isset($_CONST["POOL"][$_CONST["CONNECTION"][$connection_name]["POOL"]]["CRITICAL"]) ? $_CONST["POOL"][$_CONST["CONNECTION"][$connection_name]["POOL"]]["CRITICAL"] : false;
		$force_encoding = (isset($_CONST["POOL"][$_CONST["CONNECTION"][$connection_name]["POOL"]]["FORCE_ENCODING"]) && $_CONST["POOL"][$_CONST["CONNECTION"][$connection_name]["POOL"]]["FORCE_ENCODING"]!='') ? $_CONST["POOL"][$_CONST["CONNECTION"][$connection_name]["POOL"]]["FORCE_ENCODING"] : false;

		if($pool != "" & $dbname != ""){
			// Classe Factory de création de l'objet de connection à la base de données
			require_once("DatabaseFactory.class.php");

			try{
				if (!isset($this->connexions[$pool])){
					// Création de la connection au pool et à la base de données
					$this->connexions[$pool] = DatabaseFactory::createConnexion($pool,$dbname);
				} else {
					$this->connexions[$pool]->selectDB($dbname);
					$this->connexions[$pool]->data = null;
				}
				
			} catch (DataBaseException $e) {

				// Il ne faut pas bloquer l'internaute si la connexion n'est pas critique 
				if($critical==true) {
					//include("/indispo.tpl.php");
					echo "Connexion BDD impossible.<br/>".$e->getMessage()."\n<!-- ";print_r($e);echo ' -->';
					exit;
				}

				$this->connexions[$pool] = null;
			}
		}else{
			echo "IMPOSSIBLE DE CREER UNE CONNECTION SUR LA BASE DE DONNEES : ".$pool." / ".$dbname." / ".$connection_name;
			die();
		}

		return $this->connexions[$pool];
	}