Conectare baza de date - OOP

Discuţii despre accesabilitate, interfaţa cu utilizatorul,stil de programare, tehnici, algoritmi, managementul proiectului,probleme legate de afişarea în diverse browsere.

Moderator: Moderatori

valentinp
New Member
Mesaje: 1
Membru din: Vin Dec 23, 2011 8:30 pm
Localitate: Oltenita

Conectare baza de date - OOP

Mesajde valentinp » Vin Dec 23, 2011 8:48 pm

Cum este mai bine sa te conectezi la o baza de date in cadrul unui proiect in care se foloseste conceptul OOP: sa faci un fisier separat (ex. connection.php) pe care sa-l incluzi in fiecare clasa unde este necesar sau sa te connectezi in fiecare clasa separat ?



nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Mesajde nevvermind » Vin Dec 23, 2011 9:37 pm

Ideea este sa nu il incluzi de 100 de ori.
Creezi conexiunea o singura data, apoi o folosesti oriunde vrei, de-a lungul scriptului. Ai cateva variante: globale, pattern-ul Singleton, pattern-ul Registry sau combinatia ultimelor doua. Poate or mai fi. Uite cum ar fi Singleton-ul:

Cod: Selectaţi tot

<?php

/**
 * Singleton wrapping a PDO connection.
 */
class Connection
{
    /**
     * @var Connection
     */
    protected static $instance;
   
    /**
     * @var PDO
     */
    protected $conn;
   
    /**
     * Singleton.
     *
     * @return Connection
     */
    public static function getInstance()
    {
        if (null === self::$instance) {
            self::$instance = new self();
//            self::$instance = new static(); // LSB - PHP 5.3+
        }
        return self::$instance;
    }
   
    // disallow; only through getInstance()
    protected function __construct() {}
    protected function __clone() {}
   
    /**
     * @param PDO $conn
     */
    public function setConnection(PDO $conn)
    {
        $this->conn = $conn;
    }
   
    /**
     * @return PDO
     */
    public function getConnection()
    {
        return $this->conn;
    }
}

// setarea conexiunii o faci cat mai devreme in script (index.php, boostrap-phase etc.)
$conn = new PDO('mysql:dbname=test;host=127.0.0.1', 'root', '');
Connection::getInstance()->setConnection($conn);

// use connection wherever
var_dump(Connection::getInstance()->getConnection());

Pune-ti clasele intr-un folder ("lib", de ex.) si pune-l in include_path. Mai poti folosi spl_autoload_register() pentru asta. Pune o singura clasa intr-un fisier, fa clasele specializate etc.


Înapoi la “Dezvoltare”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 15 vizitatori