$dsn es el nombre de la fuente de datos. Maneja su nombre de host por usted. Lo usas así:
$dsn = 'mysql:dbname=YOUR_DB_NAME;host=YOUR_HOSTNAME'
Con la línea $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Ha establecido excepciones para que se generen cuando se producen errores (lo que me gusta), por lo que en su clase extendida puede manejar errores en los controladores de excepciones. Si tuviera un método llamado getAssoc en su clase PDO extendida, se vería así:
/// 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);
}
}