moin,
ich will mir meine Database-Klasse erneuern und habe dazu eine neues Property PDO::FETCH_CLASS
neben PDO::FETCH_OBJ
in meiner gebauten Methode verwendet.
ich bin etwas stutzig geworden weil man ja in PHP kein Overloading betreiben sondern nur Parameter Defaults verwenden darf wie z.B. function foobar( $param1 = 'tok', $param2 = 'qux' ) {}
Ich kann ja beliebig viele Parameter mit Wert null
angeben und die Funktion aufrufen, das funzt. Anders die Methode PDOStatement::setFetchMode
😕.
public PDOStatement::setFetchMode ( int $mode ) : bool
public PDOStatement::setFetchMode ( int $PDO::FETCH_COLUMN , int $colno ) : bool
public PDOStatement::setFetchMode ( int $PDO::FETCH_CLASS , string $classname , array $ctorargs ) : bool
public PDOStatement::setFetchMode ( int $PDO::FETCH_INTO , object $object ) : bool
Hier einen Auszug pdostatement.setfetchmode.php aus php.net
könnten da Try-Catch-Blöcke, welches die Parameter behandelt, in dieser setFetchMode
enthalten sein? Dann ergibt es für mich einen Sinn sonst bin ich überfragt.
Ich möchte saubere Codes schreiben können für eine Wiederverwendung.
try {
$statement = self::$_handler->prepare( $query );
$statement->setFetchMode( /* wie gefetcht */ );
$statement->execute( $params );
$result = $cargo( $statement );
} catch( PDOException $ex ) {
throw new PDOException( $ex );
}
Wenn ich jetzt $statement->setFetchMode( $mode, null, null );
mit PDO::FETCH_ASSOC
schreibe meckert er. Wenn ich den Parameter Wert null
weglasse funzt es.
Warning: PDOStatement::setFetchMode(): SQLSTATE[HY000]: General error: fetch mode doesn't allow any extra arguments [...]
ich bin einwenig überfordert
lgmb