diff options
Diffstat (limited to 'ext/pdo/tests/pdo_018.phpt')
-rw-r--r-- | ext/pdo/tests/pdo_018.phpt | 269 |
1 files changed, 0 insertions, 269 deletions
diff --git a/ext/pdo/tests/pdo_018.phpt b/ext/pdo/tests/pdo_018.phpt deleted file mode 100644 index 9cf2cc2fb8..0000000000 --- a/ext/pdo/tests/pdo_018.phpt +++ /dev/null @@ -1,269 +0,0 @@ ---TEST-- -PDO Common: serializing ---SKIPIF-- -<?php # vim:ft=php -if (!extension_loaded('pdo')) die('skip'); -if (!interface_exists('Serializable')) die('skip no Serializable interface'); -$dir = getenv('REDIR_TEST_DIR'); -if (false == $dir) die('skip no driver'); -require_once $dir . 'pdo_test.inc'; -PDOTest::skip(); -?> ---FILE-- -<?php -require getenv('REDIR_TEST_DIR') . 'pdo_test.inc'; -$db = PDOTest::factory(); - -class TestBase implements Serializable -{ - public $BasePub = 'Public'; - protected $BasePro = 'Protected'; - private $BasePri = 'Private'; - - function serialize() - { - $serialized = array(); - foreach($this as $prop => $val) { - $serialized[$prop] = $val; - } - $serialized = serialize($serialized); - echo __METHOD__ . "() = '$serialized'\n"; - return $serialized; - } - - function unserialize($serialized) - { - echo __METHOD__ . "($serialized)\n"; - foreach(unserialize($serialized) as $prop => $val) { - $this->$prop = '#'.$val; - } - return true; - } -} - -class TestDerived extends TestBase -{ - public $BasePub = 'DerivedPublic'; - protected $BasePro = 'DerivdeProtected'; - public $DerivedPub = 'Public'; - protected $DerivedPro = 'Protected'; - private $DerivedPri = 'Private'; - - function serialize() - { - echo __METHOD__ . "()\n"; - return TestBase::serialize(); - } - - function unserialize($serialized) - { - echo __METHOD__ . "()\n"; - return TestBase::unserialize($serialized); - } -} - -class TestLeaf extends TestDerived -{ -} - -$db->exec('CREATE TABLE classtypes(id int NOT NULL PRIMARY KEY, name VARCHAR(20) NOT NULL UNIQUE)'); -$db->exec('INSERT INTO classtypes VALUES(0, \'stdClass\')'); -$db->exec('INSERT INTO classtypes VALUES(1, \'TestBase\')'); -$db->exec('INSERT INTO classtypes VALUES(2, \'TestDerived\')'); -$db->exec('CREATE TABLE test(id int NOT NULL PRIMARY KEY, classtype int NULL, val VARCHAR(255))'); - -$db->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION); - -var_dump($db->query('SELECT COUNT(*) FROM classtypes')->fetchColumn()); -var_dump($db->query('SELECT id, name FROM classtypes ORDER by id')->fetchAll(PDO_FETCH_COLUMN|PDO_FETCH_UNIQUE)); - -$objs = array(); -$objs[0] = new stdClass; -$objs[1] = new TestBase; -$objs[2] = new TestDerived; -$objs[3] = new TestLeaf; - -$stmt = $db->prepare('SELECT id FROM classtypes WHERE name=:cname'); -$stmt->bindParam(':cname', $cname); - -$ctypes = array(); - -foreach($objs as $obj) -{ - $cname = get_class($obj); - $ctype = NULL; /* set default for non stored class name */ - $stmt->execute(); - $stmt->bindColumn('id', $ctype); - $stmt->fetch(PDO_FETCH_BOUND); - $ctypes[$cname] = $ctype; -} - -echo "===TYPES===\n"; -var_dump($ctypes); - -unset($stmt); - -echo "===INSERT===\n"; -$stmt = $db->prepare('INSERT INTO test VALUES(:id, :classtype, :val)'); -$stmt->bindParam(':id', $idx); -$stmt->bindParam(':classtype', $ctype); -$stmt->bindParam(':val', $val); - -foreach($objs as $idx => $obj) -{ - $ctype = $ctypes[get_class($obj)]; - if (method_exists($obj, 'serialize')) - { - $val = $obj->serialize(); - } - else - { - $val = ''; - } - $stmt->execute(); -} - -unset($stmt); - -echo "===DATA===\n"; -var_dump($db->query('SELECT test.val FROM test')->fetchAll(PDO_FETCH_COLUMN)); - -echo "===FAILURE===\n"; -try -{ - $db->query('SELECT classtypes.name AS name, test.val AS val FROM test LEFT JOIN classtypes ON test.classtype=classtypes.id')->fetchAll(PDO_FETCH_CLASS|PDO_FETCH_CLASSTYPE|PDO_FETCH_SERIALIZE, 'TestLeaf', array()); -} -catch (PDOException $e) -{ - echo 'Exception:'; - echo $e->getMessage()."\n"; -} - -echo "===COUNT===\n"; -var_dump($db->query('SELECT COUNT(*) FROM test LEFT JOIN classtypes ON test.classtype=classtypes.id WHERE (classtypes.id IS NULL OR classtypes.id > 0)')->fetchColumn()); - -echo "===DATABASE===\n"; -$stmt = $db->prepare('SELECT classtypes.name AS name, test.val AS val FROM test LEFT JOIN classtypes ON test.classtype=classtypes.id WHERE (classtypes.id IS NULL OR classtypes.id > 0)'); - -$stmt->execute(); -var_dump($stmt->fetchAll(PDO_FETCH_ASSOC)); - -echo "===FETCHCLASS===\n"; -$stmt->execute(); -var_dump($stmt->fetchAll(PDO_FETCH_CLASS|PDO_FETCH_CLASSTYPE|PDO_FETCH_SERIALIZE, 'TestLeaf')); - - -?> ---EXPECTF-- -string(1) "3" -array(3) { - [0]=> - string(8) "stdClass" - [1]=> - string(8) "TestBase" - [2]=> - string(11) "TestDerived" -} -===TYPES=== -array(4) { - ["stdClass"]=> - string(1) "0" - ["TestBase"]=> - string(1) "1" - ["TestDerived"]=> - string(1) "2" - ["TestLeaf"]=> - NULL -} -===INSERT=== -TestBase::serialize() = 'a:3:{s:7:"BasePub";s:6:"Public";s:7:"BasePro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}' -TestDerived::serialize() -TestBase::serialize() = 'a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}' -TestDerived::serialize() -TestBase::serialize() = 'a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}' -===DATA=== -array(4) { - [0]=> - string(0) "" - [1]=> - string(91) "a:3:{s:7:"BasePub";s:6:"Public";s:7:"BasePro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}" - [2]=> - string(144) "a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}" - [3]=> - string(144) "a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}" -} -===FAILURE=== -Exception:SQLSTATE[HY000]: General error: cannot unserialize class -===COUNT=== -string(1) "3" -===DATABASE=== -array(3) { - [0]=> - array(2) { - ["name"]=> - string(8) "TestBase" - ["val"]=> - string(91) "a:3:{s:7:"BasePub";s:6:"Public";s:7:"BasePro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}" - } - [1]=> - array(2) { - ["name"]=> - string(11) "TestDerived" - ["val"]=> - string(144) "a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}" - } - [2]=> - array(2) { - ["name"]=> - NULL - ["val"]=> - string(144) "a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}" - } -} -===FETCHCLASS=== -TestBase::unserialize(a:3:{s:7:"BasePub";s:6:"Public";s:7:"BasePro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}) -TestDerived::unserialize() -TestBase::unserialize(a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}) -TestDerived::unserialize() -TestBase::unserialize(a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}) -array(3) { - [0]=> - object(TestBase)#%d (3) { - ["BasePub"]=> - string(7) "#Public" - ["BasePro:protected"]=> - string(10) "#Protected" - ["BasePri:private"]=> - string(8) "#Private" - } - [1]=> - object(TestDerived)#%d (6) { - ["BasePub"]=> - string(14) "#DerivedPublic" - ["BasePro:protected"]=> - string(17) "#DerivdeProtected" - ["DerivedPub"]=> - string(7) "#Public" - ["DerivedPro:protected"]=> - string(10) "#Protected" - ["DerivedPri:private"]=> - string(7) "Private" - ["BasePri:private"]=> - string(7) "Private" - } - [2]=> - object(TestLeaf)#%d (6) { - ["BasePub"]=> - string(14) "#DerivedPublic" - ["BasePro:protected"]=> - string(17) "#DerivdeProtected" - ["DerivedPub"]=> - string(7) "#Public" - ["DerivedPro:protected"]=> - string(10) "#Protected" - ["DerivedPri:private"]=> - string(7) "Private" - ["BasePri:private"]=> - string(7) "Private" - } -} |