Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So richten Sie eine PDO-Verbindung richtig ein

Das Ziel

Aus meiner Sicht verfolgen Sie in diesem Fall zwei Ziele:

  • eine einzige/wiederverwendbare Verbindung pro Datenbank erstellen und pflegen
  • vergewissern Sie sich, dass die Verbindung ordnungsgemäß eingerichtet wurde

Lösung

Ich würde empfehlen, sowohl die anonyme Funktion als auch das Fabrikmuster für den Umgang mit PDO-Verbindungen zu verwenden. Die Verwendung würde wie folgt aussehen:

$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 );

Dann in einer anderen Datei oder tiefer in derselben Datei:

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

Die Fabrik selbst sollte in etwa so aussehen:

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 );
    }

}

Auf diese Weise hätten Sie eine zentralisierte Struktur, die sicherstellt, dass die Verbindung nur bei Bedarf hergestellt wird. Es würde auch den Prozess des Komponententests und der Wartung viel einfacher machen.

Der Anbieter wäre in diesem Fall irgendwo in der Bootstrap-Phase zu finden. Dieser Ansatz würde auch einen klaren Ort geben, an dem die Konfiguration definiert werden muss, die Sie für die Verbindung zur DB verwenden.

Beachten Sie, dass dies ein extrem vereinfachtes Beispiel ist . Sie könnten auch davon profitieren, zwei der folgenden Videos anzusehen:

Außerdem würde ich dringend empfehlen, ein richtiges Tutorial über die Verwendung von PDO (es gibt online ein Protokoll mit schlechten Tutorials).