pdo_005.phpt 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. --TEST--
  2. PDO Common: PDO::FETCH_CLASS
  3. --SKIPIF--
  4. <?php # vim:ft=php
  5. if (!extension_loaded('pdo')) die('skip');
  6. $dir = getenv('REDIR_TEST_DIR');
  7. if (false == $dir) die('skip no driver');
  8. require_once $dir . 'pdo_test.inc';
  9. PDOTest::skip();
  10. ?>
  11. --FILE--
  12. <?php
  13. if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.dirname(__FILE__) . '/../../pdo/tests/');
  14. require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
  15. $db = PDOTest::factory();
  16. $db->exec('CREATE TABLE test(id int NOT NULL PRIMARY KEY, val VARCHAR(10), val2 VARCHAR(10))');
  17. $db->exec("INSERT INTO test VALUES(1, 'A', 'AA')");
  18. $db->exec("INSERT INTO test VALUES(2, 'B', 'BB')");
  19. $db->exec("INSERT INTO test VALUES(3, 'C', 'CC')");
  20. $stmt = $db->prepare('SELECT id, val, val2 from test');
  21. class TestBase
  22. {
  23. public $id;
  24. protected $val;
  25. private $val2;
  26. }
  27. class TestDerived extends TestBase
  28. {
  29. protected $row;
  30. public function __construct(&$row)
  31. {
  32. echo __METHOD__ . "($row,{$this->id})\n";
  33. $this->row = $row++;
  34. }
  35. }
  36. $stmt->execute();
  37. var_dump($stmt->fetchAll(PDO::FETCH_CLASS));
  38. $stmt->execute();
  39. var_dump($stmt->fetchAll(PDO::FETCH_CLASS, 'TestBase'));
  40. $stmt->execute();
  41. var_dump($stmt->fetchAll(PDO::FETCH_CLASS, 'TestDerived', array(0)));
  42. ?>
  43. --EXPECTF--
  44. array(3) {
  45. [0]=>
  46. object(stdClass)#%d (3) {
  47. ["id"]=>
  48. string(1) "1"
  49. ["val"]=>
  50. string(1) "A"
  51. ["val2"]=>
  52. string(2) "AA"
  53. }
  54. [1]=>
  55. object(stdClass)#%d (3) {
  56. ["id"]=>
  57. string(1) "2"
  58. ["val"]=>
  59. string(1) "B"
  60. ["val2"]=>
  61. string(2) "BB"
  62. }
  63. [2]=>
  64. object(stdClass)#%d (3) {
  65. ["id"]=>
  66. string(1) "3"
  67. ["val"]=>
  68. string(1) "C"
  69. ["val2"]=>
  70. string(2) "CC"
  71. }
  72. }
  73. array(3) {
  74. [0]=>
  75. object(TestBase)#%d (3) {
  76. ["id"]=>
  77. string(1) "1"
  78. ["val":protected]=>
  79. string(1) "A"
  80. ["val2":"TestBase":private]=>
  81. string(2) "AA"
  82. }
  83. [1]=>
  84. object(TestBase)#%d (3) {
  85. ["id"]=>
  86. string(1) "2"
  87. ["val":protected]=>
  88. string(1) "B"
  89. ["val2":"TestBase":private]=>
  90. string(2) "BB"
  91. }
  92. [2]=>
  93. object(TestBase)#%d (3) {
  94. ["id"]=>
  95. string(1) "3"
  96. ["val":protected]=>
  97. string(1) "C"
  98. ["val2":"TestBase":private]=>
  99. string(2) "CC"
  100. }
  101. }
  102. TestDerived::__construct(0,1)
  103. TestDerived::__construct(1,2)
  104. TestDerived::__construct(2,3)
  105. array(3) {
  106. [0]=>
  107. object(TestDerived)#%d (5) {
  108. ["row":protected]=>
  109. int(0)
  110. ["id"]=>
  111. string(1) "1"
  112. ["val":protected]=>
  113. string(1) "A"
  114. ["val2":"TestBase":private]=>
  115. NULL
  116. ["val2"]=>
  117. string(2) "AA"
  118. }
  119. [1]=>
  120. object(TestDerived)#%d (5) {
  121. ["row":protected]=>
  122. int(1)
  123. ["id"]=>
  124. string(1) "2"
  125. ["val":protected]=>
  126. string(1) "B"
  127. ["val2":"TestBase":private]=>
  128. NULL
  129. ["val2"]=>
  130. string(2) "BB"
  131. }
  132. [2]=>
  133. object(TestDerived)#%d (5) {
  134. ["row":protected]=>
  135. int(2)
  136. ["id"]=>
  137. string(1) "3"
  138. ["val":protected]=>
  139. string(1) "C"
  140. ["val2":"TestBase":private]=>
  141. NULL
  142. ["val2"]=>
  143. string(2) "CC"
  144. }
  145. }