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ć.