Taki zabieg powinieneś stosować tylko wtedy, jak chcesz wykonać takie samo lub podobne polecenie wielokrotną ilość razy:
http://us3.php.net/manual/en/pdostatement.closecursor.php#refsect1-pdostatement.closecursor-examples
2 pytanie, tak powinno wyglądać otwarcie:
<?php
function connect(array $options){
$dns = sprintf('mysql:host=%s;dbname=%s', $options['host'], $options['db_name']);
$connection = new PDO(
$dns,
$options['user'],
$options['password'],
[
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
]
);
$connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $connection;
}
lub:
<?php
function connect(array $options){
$dns = sprintf('mysql:host=%s;dbname=%s;charset=utf8', $options['host'], $options['db_name']);
$connection = new PDO(
$dns,
$options['user'],
$options['password']
);
$connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $connection;
}
a zamknięcie:
<?php
$connection = connect($options);
unset($connection); //lub zostawić, by zmienna zgineła śmiercią naturalną