sql >> Database >  >> RDS >> Mysql

Hoe een PDO-verbinding correct in te stellen

Het doel

Zoals ik het zie, is je doel in dit geval tweeledig:

  • een enkele/herbruikbare verbinding per database maken en onderhouden
  • zorg ervoor dat de verbinding correct is ingesteld

Oplossing

Ik zou aanraden om zowel de anonieme functie als het fabriekspatroon te gebruiken voor het omgaan met PDO-verbindingen. Het gebruik ervan ziet er als volgt uit:

$provider = function()
{
    $instance = new PDO('mysql:......;charset=utf8', 'username', 'password');
    $instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $instance->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    return $instance;
};

$factory = new StructureFactory( $provider );

Dan in een ander bestand of lager in hetzelfde bestand:

$something = $factory->create('Something');
$foobar = $factory->create('Foobar');

De fabriek zelf zou er ongeveer zo uit moeten zien:

class StructureFactory
{
    protected $provider = null;
    protected $connection = null;

    public function __construct( callable $provider )
    {
        $this->provider = $provider;
    }

    public function create( $name)
    {
        if ( $this->connection === null )
        {
            $this->connection = call_user_func( $this->provider );
        }
        return new $name( $this->connection );
    }

}

Op deze manier zou je een gecentraliseerde structuur hebben, die ervoor zorgt dat er alleen verbinding wordt gemaakt als dat nodig is. Het zou ook het proces van unit-testing en onderhoud veel gemakkelijker maken.

De provider zou in dit geval ergens in de bootstrap-fase te vinden zijn. Deze benadering zou ook een duidelijke locatie geven waar u de configuratie kunt definiëren, die u gebruikt om verbinding te maken met de database.

Houd er rekening mee dat dit een uiterst vereenvoudigd voorbeeld is . U kunt ook profiteren van het bekijken van twee volgende video's:

Ik zou ook sterk aanbevelen om een goede tutorial over het gebruik van PDO (er zijn een logboek met slechte tutorials online).



  1. een telling voor elke join - optimalisatie

  2. Toegang geweigerd voor gebruiker 'root'@'localhost' met PHPMyAdmin

  3. gem install pg werkt niet op OSX Lion

  4. Hoe strftime en datetime correct te gebruiken met behulp van de Room-bibliotheek?