MB: Ist PDOStatement::setFetchMode Overloading?

Beitrag lesen

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