Namentliche Parameter in einem asoziativen Array einer Funktion zu übergeben ist deswegen interessant, weil erstens die Reihenfolge keine Rolle mehr spielt, zweitens Defaults gesetzt werden können und drittens der Code damit übersichtlicher wird. D.h. Du übergibst ein Array mit Schlüssel-Werte-Paaren, hast ein Array mit demselben Aufbau als Default in deiner Methode oder einem Konstruktor und machst nach der Übergabe ein $config = array_merge($default, $parameter);
Beispiel:
class MySQL{
protected $EE; // for PDOException
protected $DBH;
public function __construct($cfg = array()){
try{
$this->dbh($cfg);
}
catch(PDOException $e){
$this->EE = $e->getMessage();
}
}
private function dbh(&$cfg = array()){
$default = array(
'user' => '',
'pass' => '',
'host' => 'localhost',
'port' => 3306,
'base' => '',
);
$cred = array_merge($default, $cfg);
$this->DBH = new PDO(sprintf("mysql:dbname=%s;host=%s", $cred['base'], $cred['host']),
$cred['user'], $cred['pass'],
array(
PDO::ATTR_TIMEOUT => 2,
));
$this->DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
// Exception Error ausgeben
public function ee(){
if($this->EE){ return $this->EE; }
else{ return; }
}
}
$m = new MySQL( array( 'host' => 'otto' ) );
print_r($m);
In Perl seit Jahrzehnten bewährt übrigens..