sql >> データベース >  >> RDS >> Mysql

PDO接続を適切に設定する方法

    目標

    私が見ているように、この場合のあなたの目的は2つあります:

    • データベースごとに単一の再利用可能な接続を作成して維持する
    • 接続が正しく設定されていることを確認してください

    解決策

    PDO接続を処理するには、無名関数とファクトリパターンの両方を使用することをお勧めします。使用方法は次のようになります:

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

    次に、同じファイル内の別のファイルまたはそれ以下で:

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

    工場自体は次のようになります:

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

    このようにすると、一元化された構造になり、必要な場合にのみ接続が作成されるようになります。また、単体テストとメンテナンスのプロセスがはるかに簡単になります。

    この場合のプロバイダーは、ブートストラップ段階のどこかにあります。このアプローチでは、DBへの接続に使用する構成を定義する場所も明確になります。

    これは非常に単純化された例であることに注意してください 。また、次の2つのビデオを視聴することでメリットが得られる場合があります。

    また、適切なチュートリアルを読むことを強くお勧めします PDOの使用について(オンラインで悪いチュートリアルのログがあります)。



    1. PostgreSQLJSON列をHibernateエンティティプロパティにマッピングする

    2. SQL Serverでデータアクセスが有効になっているかどうかを確認する2つの方法(T-SQLの例)

    3. SQLクエリでOracleスキーマサイズを表示するにはどうすればよいですか?

    4. Java +MysqlUTF8の問題