Annotation of embedaddon/php/ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_serialize_simple.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: MySQL PDOStatement->fetch(), PDO::FETCH_SERIALIZE
3: --SKIPIF--
4: <?php
5: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
6: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
7: MySQLPDOTest::skip();
8: if (version_compare(PHP_VERSION, '5.1.0', '<'))
9: die("skip Needs 5.1.0 and Interface Serializable");
10: ?>
11: --FILE--
12: <?php
13: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
14: $db = MySQLPDOTest::factory();
15:
16: try {
17:
18: class myclass implements Serializable {
19:
20: public function __construct($caller = null) {
21: printf("%s(%s) - note that it must not be called when unserializing\n", __METHOD__, var_export($caller, true));
22: }
23:
24: public function __set($prop, $value) {
25: printf("%s(%s, %s)\n", __METHOD__, var_export($prop, true), var_export($value, true));
26: $this->{$prop} = $value;
27: }
28:
29: public function serialize() {
30: printf("%s()\n", __METHOD__);
31: return 'Value from serialize()';
32: }
33:
34: public function unserialize($data) {
35: printf("%s(%s)\n", __METHOD__, var_export($data, true));
36: }
37:
38: }
39:
40: printf("Lets see what the Serializeable interface makes our object behave like...\n");
41: $obj = new myclass('Called by script');
42: $tmp = unserialize(serialize($obj));
43: var_dump($tmp);
44:
45: printf("\nAnd now magic PDO using fetchAll(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE)...\n");
46: $db->exec('DROP TABLE IF EXISTS test');
47: $db->exec(sprintf('CREATE TABLE test(myobj BLOB) ENGINE=%s', MySQLPDOTest::getTableEngine()));
48: $db->exec("INSERT INTO test(myobj) VALUES ('Data fetched from DB to be given to unserialize()')");
49:
50: $stmt = $db->prepare('SELECT myobj FROM test');
51: $stmt->execute();
52: $rows = $stmt->fetchAll(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE, 'myclass', array('Called by PDO'));
53: var_dump($rows[0]);
54:
55: $stmt->execute();
56: $rows = $stmt->fetchAll(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE, 'myclass');
57: var_dump($rows[0]);
58:
59: printf("\nAnd now PDO using setFetchMode(PDO::FETCH:CLASS|PDO::FETCH_SERIALIZE) + fetch()...\n");
60: $stmt = $db->prepare('SELECT myobj FROM test');
61: $stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE, 'myclass', array('Called by PDO'));
62: $stmt->execute();
63: var_dump($stmt->fetch());
64:
65: } catch (PDOException $e) {
66: printf("[001] %s [%s] %s\n",
67: $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
68: }
69:
70: $db->exec('DROP TABLE IF EXISTS test');
71: print "done!\n";
72: ?>
73: --EXPECTF--
74: Lets see what the Serializeable interface makes our object behave like...
75: myclass::__construct('Called by script') - note that it must not be called when unserializing
76: myclass::serialize()
77: myclass::unserialize('Value from serialize()')
78: object(myclass)#%d (0) {
79: }
80:
81: And now magic PDO using fetchAll(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE)...
82: myclass::unserialize('Data fetched from DB to be given to unserialize()')
83: object(myclass)#%d (0) {
84: }
85: myclass::unserialize('Data fetched from DB to be given to unserialize()')
86: object(myclass)#%d (0) {
87: }
88:
89: And now PDO using setFetchMode(PDO::FETCH:CLASS|PDO::FETCH_SERIALIZE) + fetch()...
90: myclass::unserialize('Data fetched from DB to be given to unserialize()')
91: object(myclass)#%d (0) {
92: }
93: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>