Rozpoczynamy pracę nad bazodanowymi zagadnieniami naszego frameworka MVC. Łączymy się z bazą danych przez PDO i piszemy credentials parser!

Łączymy się z naszą bazą danych:

<?php
try {
    $dbh = new PDO('mysql:host=localhost;dbname=mydb123', 'user', 'password');
    echo "OK!";
} catch (PDOException $e) {
    echo "ERROR";
}

?>

Jeżeli jest ok – połączenie nawiązane.

Napiszemy sobie prosty parser argumentów przekazywanych do konstruktora PDO. Zmienimy to jeszcze 10 razy, ale od czegoś trzeba zacząć:

class PDOCredentialsParser {
    public static function parseCredentials($credentials){
        $dsn = sprintf(
            '%s:host=%s;dbname=%s',
            $credentials['driver'],
            $credentials['host'],
            $credentials['db_name']
        );

        return [$dsn, $credentials['db_user'], $credentials['db_password']];
    }
}

Zobaczmy, jak to działa:

print_r(PDOCredentialsParser::parseCredentials([
    'driver' => 'mysql',
    'host' => 'localhost',
    'db_name' => 'mydb123',
    'db_user' => 'user',
    'db_password' => 'password']));

//Array ( 
//[0] => mysql:host=localhost;dbname=mydb123 
//[1] => user 
//[2] => password )

Idealny match z argumentami, jakie musimy przekazać do konstruktora PDO – wykorzystajmy to:

$credentials = [
    'driver' => 'mysql',
    'host' => 'localhost',
    'db_name' => 'mydb123',
    'db_user' => 'user',
    'db_password' => 'pass'];

$parsedCredentials = PDOCredentialsParser::parseCredentials($credentials);

try {
    $dbh = new PDO(...$parsedCredentials);
    echo "OK!";
} catch (PDOException $e) {
    echo "ERROR";
}

Po prostu rozpakowaliśmy tę tablicę. Będziemy to jeszcze rozbudowywać.