Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara mengatur koneksi PDO dengan benar

Gol

Seperti yang saya lihat, tujuan Anda dalam hal ini ada dua:

  • membuat dan memelihara koneksi tunggal/dapat digunakan kembali per database
  • pastikan koneksi telah diatur dengan benar

Solusi

Saya akan merekomendasikan untuk menggunakan fungsi anonim dan pola pabrik untuk menangani koneksi PDO. Penggunaannya akan terlihat seperti ini :

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

Kemudian di file yang berbeda atau lebih rendah di file yang sama:

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

Pabrik itu sendiri akan terlihat seperti ini:

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

}

Dengan cara ini Anda akan memiliki struktur terpusat, yang memastikan bahwa koneksi dibuat hanya jika diperlukan. Ini juga akan membuat proses pengujian dan pemeliharaan unit menjadi lebih mudah.

Penyedia dalam hal ini akan ditemukan di suatu tempat pada tahap bootstrap. Pendekatan ini juga akan memberikan lokasi yang jelas untuk menentukan konfigurasi, yang Anda gunakan untuk menghubungkan ke DB.

Ingatlah bahwa ini adalah contoh yang sangat disederhanakan . Anda juga mungkin mendapat manfaat dari menonton dua video berikut:

Juga, saya sangat menyarankan untuk membaca tutorial yang tepat tentang penggunaan PDO (ada log tutorial buruk online).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bergabung antara tabel dalam dua database yang berbeda?

  2. INSERT ... ON DUPLICATE KEY (tidak melakukan apa-apa)

  3. Codeigniter - beberapa koneksi database

  4. Panduan Merancang Database Untuk Polling &Survey Di MySQL

  5. Mengapa password_verify kembali salah?