$dsn to nazwa źródła danych. Obsługuje twoją nazwę hosta za Ciebie. Używasz go w ten sposób:
$dsn = 'mysql:dbname=YOUR_DB_NAME;host=YOUR_HOSTNAME'
Z wierszem $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Ustawiłeś wyjątki, które mają być zgłaszane, gdy wystąpią błędy (co mi się podoba), więc w swojej klasie rozszerzonej możesz obsługiwać błędy w procedurach obsługi wyjątków. Gdybyś miał metodę o nazwie getAssoc w swojej rozszerzonej klasie PDO, to wyglądałoby to tak:
/// Get an associative array of results for the sql.
public function getAssoc($sql, $params=array())
{
try
{
$stmt = $this->prepare($sql);
$params = is_array($params) ? $params : array($params);
$stmt->execute($params);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
catch (Exception $e)
{
// Echo the error or Re-throw it to catch it higher up where you have more
// information on where it occurred in your program.
// e.g echo 'Error: ' . $e->getMessage();
throw new Exception(
__METHOD__ . 'Exception Raised for sql: ' . var_export($sql, true) .
' Params: ' . var_export($params, true) .
' Error_Info: ' . var_export($this->errorInfo(), true),
0,
$e);
}
}