mirror of
https://github.com/php/php-src.git
synced 2024-10-07 09:46:10 +00:00
cb9658feef
old: proto object PDO::prepare(string statment [, array driver_options [, string classname ]]) now: proto object PDO::prepare(string statment [, array options]) param 'classname' and and 'ctor_args' are now set through options using index PDO_ATTR_STATEMENT_CLASS - Change all deriver_options parameters to 'options' to reflect the fact that they may contain statement as well as driver specific flags
68 lines
1.8 KiB
PHP
Executable File
68 lines
1.8 KiB
PHP
Executable File
<?php # vim:ft=php
|
|
|
|
require_once('pdo.inc');
|
|
|
|
set_sql('create', 'CREATE TABLE test(id int PRIMARY KEY, val VARCHAR(10), grp VARCHAR(10))');
|
|
set_sql('insert1', 'INSERT INTO test VALUES(1, \'A\', \'Group1\')');
|
|
set_sql('insert2', 'INSERT INTO test VALUES(2, \'B\', \'Group1\')');
|
|
set_sql('insert3', 'INSERT INTO test VALUES(3, \'C\', \'Group2\')');
|
|
set_sql('insert4', 'INSERT INTO test VALUES(4, \'D\', \'Group2\')');
|
|
set_sql('select1', 'SELECT grp, id FROM test');
|
|
set_sql('select2', 'SELECT id, val FROM test');
|
|
|
|
$DB->exec($SQL['create']);
|
|
$DB->exec($SQL['insert1']);
|
|
$DB->exec($SQL['insert2']);
|
|
$DB->exec($SQL['insert3']);
|
|
$DB->exec($SQL['insert4']);
|
|
|
|
class Test1
|
|
{
|
|
public function __construct($id, $val)
|
|
{
|
|
echo __METHOD__ . "($id,$val)\n";
|
|
$this->id = $id;
|
|
$this->val = $val;
|
|
}
|
|
|
|
static public function factory($id, $val)
|
|
{
|
|
echo __METHOD__ . "($id,$val)\n";
|
|
return new self($id, $val);
|
|
}
|
|
}
|
|
|
|
function test($id,$val='N/A')
|
|
{
|
|
echo __METHOD__ . "($id,$val)\n";
|
|
return array($id=>$val);
|
|
}
|
|
|
|
$f = new Test1(0,0);
|
|
|
|
var_dump($DB->query($SQL['select1'])->fetchAll(PDO_FETCH_FUNC|PDO_FETCH_GROUP, 'test'));
|
|
var_dump($DB->query($SQL['select2'])->fetchAll(PDO_FETCH_FUNC, 'test'));
|
|
var_dump($DB->query($SQL['select2'])->fetchAll(PDO_FETCH_FUNC, array('Test1','factory')));
|
|
var_dump($DB->query($SQL['select2'])->fetchAll(PDO_FETCH_FUNC, array($f, 'factory')));
|
|
|
|
class DerivedStatement extends PDOStatement
|
|
{
|
|
private function __construct($name, $db)
|
|
{
|
|
$this->name = $name;
|
|
echo __METHOD__ . "($name)\n";
|
|
}
|
|
|
|
function retrieve($id, $val) {
|
|
echo __METHOD__ . "($id,$val)\n";
|
|
return array($id=>$val);
|
|
}
|
|
}
|
|
|
|
$stmt = $DB->prepare($SQL['select2'], array(PDO_ATTR_STATEMENT_CLASS=>array('DerivedStatement', array('Overloaded', $DB))));
|
|
var_dump(get_class($stmt));
|
|
$stmt->execute();
|
|
var_dump($stmt->fetchAll(PDO_FETCH_FUNC, array($stmt, 'retrieve')));
|
|
|
|
?>
|