2010-05-24 8 views
0

Hé les gars, j'ai un cours de connexion que j'ai trouvé pour pdo. J'appelle la méthode de connexion sur la page sur laquelle le fichier est inclus. Le problème est que dans les fonctions la variable $ conn n'est pas définie même si j'ai déclaré que la méthode était publique (nue avec moi je suis très nouveau à POO), et je me demandais si quelqu'un avait une solution élégante autre que globale dans chaque fonction . Toutes les suggestions sont grandement appréciées.php pdo connection scope

CONNEXION

class PDOConnectionFactory{ 
    // receives the connection 
    public $con = null; 
    // swich database? 
    public $dbType = "mysql"; 

    // connection parameters 
    // when it will not be necessary leaves blank only with the double quotations marks "" 
    public $host = "localhost"; 
    public $user = "user"; 
    public $senha = "password"; 
    public $db = "database"; 

    // arrow the persistence of the connection 
    public $persistent = false; 

    // new PDOConnectionFactory(true) <--- persistent connection 
    // new PDOConnectionFactory()  <--- no persistent connection 
    public function PDOConnectionFactory($persistent=false){ 
     // it verifies the persistence of the connection 
     if($persistent != false){ $this->persistent = true; } 
    } 

    public function getConnection(){ 
      try{ 
       // it carries through the connection 
       $this->con = new PDO($this->dbType.":host=".$this->host.";dbname=".$this->db, $this->user, $this->senha, 
       array(PDO::ATTR_PERSISTENT => $this->persistent)); 
       // carried through successfully, it returns connected 
       return $this->con; 
      // in case that an error occurs, it returns the error; 
      }catch (PDOException $ex){ echo "We are currently experiencing technical difficulties. We have a bunch of monkies working really hard to fix the problem. Check back soon: ".$ex->getMessage(); } 

    } 

    // close connection 
    public function Close(){ 
     if($this->con != null) 
      $this->con = null; 
    } 

} 

PAGE UTILISÉ SUR

include("includes/connection.php"); 

$db = new PDOConnectionFactory(); 
$conn = $db->getConnection(); 

function test(){ 
try{ 
    $sql = 'SELECT * FROM topic'; 
$stmt = $conn->prepare($sql); 
$result=$stmt->execute(); 

} 
catch(PDOException $e){ echo $e->getMessage(); } 
} 
test(); 

Répondre

0

Vous pouvez declarate classe de base de données où vous transportant la classe conn pdo, alors vous ne devez pas les doublons instaces de cela. Et toutes les opérations de base de données que vous pouvez faire par cette classe. Je veux dire ma réponse est ce que vous cherchez.

Mais je vois, vous utilisez seulement la classe hado PDO dans le modèle de Factory Product. Vous pouvez utiliser une classe de support de base de données complète normale sous PDO (inclut l'exécution de requêtes à partir d'une fonction) et sans ce modèle de conception lorsque vous ne souhaitez pas utiliser de nombreux moteurs de connecteurs de base de données.

+0

pouvez-vous peut-être me montrer un exemple? – Scarface

+0

@Scarface: Télécharger le framework TinyMVC et obtenir à partir du fichier plugins db.PDO_MVC.php là vous avez exemple – Svisstack