diff options
author | Marcus Boerger <helly@php.net> | 2005-10-02 20:07:11 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2005-10-02 20:07:11 +0000 |
commit | ca9dd7d82674dc802f9a4c6a6e4600627b3590ce (patch) | |
tree | 479302652fe4835dc1fb975f5d15ffd1a3fde21d /ext/pdo/tests/pdo_030.phpt | |
parent | 0ea0e1615f8892c3f024418c69b2398bd949b619 (diff) | |
download | php-git-ca9dd7d82674dc802f9a4c6a6e4600627b3590ce.tar.gz |
- Add PDO::setAttribute(PDO::ATTR_STATEMENT_CLASS)
Diffstat (limited to 'ext/pdo/tests/pdo_030.phpt')
-rwxr-xr-x | ext/pdo/tests/pdo_030.phpt | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/ext/pdo/tests/pdo_030.phpt b/ext/pdo/tests/pdo_030.phpt new file mode 100755 index 0000000000..0ebbdf3730 --- /dev/null +++ b/ext/pdo/tests/pdo_030.phpt @@ -0,0 +1,176 @@ +--TEST-- +PDO Common: extending PDO (4) +--SKIPIF-- +<?php # vim:ft=php +if (!extension_loaded('pdo')) die('skip'); +$dir = getenv('REDIR_TEST_DIR'); +if (false == $dir) die('skip no driver'); +require_once $dir . 'pdo_test.inc'; +PDOTest::skip(); +?> +--FILE-- +<?php +if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.dirname(__FILE__) . '/../../pdo/tests/'); +require getenv('REDIR_TEST_DIR') . 'pdo_test.inc'; + +$data = array( + array('10', 'Abc', 'zxy'), + array('20', 'Def', 'wvu'), + array('30', 'Ghi', 'tsr'), +); + +class PDOStatementX extends PDOStatement +{ + public $dbh; + + protected function __construct($dbh) + { + $this->dbh = $dbh; + $this->setFetchMode(PDO::FETCH_ASSOC); + echo __METHOD__ . "()\n"; + } + + function __destruct() + { + echo __METHOD__ . "()\n"; + } + + function execute() + { + echo __METHOD__ . "()\n"; + parent::execute(); + } +} + +class PDODatabase extends PDO +{ + function __destruct() + { + echo __METHOD__ . "()\n"; + } + + function query($sql) + { + echo __METHOD__ . "()\n"; + return parent::query($sql); + } +} + +$db = PDOTest::factory('PDODatabase'); +var_dump(get_class($db)); + +$db->exec('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, val VARCHAR(10), val2 VARCHAR(16))'); + +$stmt = $db->prepare("INSERT INTO test VALUES(?, ?, ?)"); +var_dump(get_class($stmt)); +foreach ($data as $row) { + $stmt->execute($row); +} + +unset($stmt); + +echo "===QUERY===\n"; + +var_dump($db->getAttribute(PDO::ATTR_STATEMENT_CLASS)); +$db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('PDOStatementx', array($db))); +var_dump($db->getAttribute(PDO::ATTR_STATEMENT_CLASS)); +$stmt = $db->query('SELECT * FROM test'); +var_dump(get_class($stmt)); +var_dump(get_class($stmt->dbh)); + +echo "===FOREACH===\n"; + +foreach($stmt as $obj) { + var_dump($obj); +} + +echo "===DONE===\n"; +exit(0); +?> +--EXPECTF-- +string(11) "PDODatabase" +string(12) "PDOStatement" +===QUERY=== +array(1) { + [0]=> + string(12) "PDOStatement" +} +array(2) { + [0]=> + string(13) "PDOStatementX" + [1]=> + array(1) { + [0]=> + object(PDODatabase)#%d (0) { + } + } +} +PDODatabase::query() +PDOStatementX::__construct() +string(13) "PDOStatementX" +string(11) "PDODatabase" +===FOREACH=== +array(3) { + ["id"]=> + string(2) "10" + ["val"]=> + string(3) "Abc" + ["val2"]=> + string(3) "zxy" +} +array(3) { + ["id"]=> + string(2) "20" + ["val"]=> + string(3) "Def" + ["val2"]=> + string(3) "wvu" +} +array(3) { + ["id"]=> + string(2) "30" + ["val"]=> + string(3) "Ghi" + ["val2"]=> + string(3) "tsr" +} +===DONE=== +PDODatabase::__destruct() +PDOStatementX::__destruct() +--UEXPECT-- +unicode(11) "PDODatabase" +unicode(12) "PDOStatement" +===QUERY=== +PDODatabase::query() +PDOStatementX::__construct() +PDOStatementX::execute() +unicode(13) "PDOStatementX" +unicode(11) "PDODatabase" +===FOREACH=== +array(3) { + [u"id"]=> + unicode(2) "10" + [u"val"]=> + unicode(3) "Abc" + [u"val2"]=> + unicode(3) "zxy" +} +array(3) { + [u"id"]=> + unicode(2) "20" + [u"val"]=> + unicode(3) "Def" + [u"val2"]=> + unicode(3) "wvu" +} +array(3) { + [u"id"]=> + unicode(2) "30" + [u"val"]=> + unicode(3) "Ghi" + [u"val2"]=> + unicode(3) "tsr" +} +===DONE=== +PDODatabase::__destruct() +PDOStatementX::__destruct() |