summaryrefslogtreecommitdiff
path: root/ext/spl/tests/array_access_002.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/spl/tests/array_access_002.phpt')
-rwxr-xr-xext/spl/tests/array_access_002.phpt137
1 files changed, 137 insertions, 0 deletions
diff --git a/ext/spl/tests/array_access_002.phpt b/ext/spl/tests/array_access_002.phpt
new file mode 100755
index 0000000000..d415b19248
--- /dev/null
+++ b/ext/spl/tests/array_access_002.phpt
@@ -0,0 +1,137 @@
+--TEST--
+SPL: array_access without return in set()
+--SKIPIF--
+<?php
+ if (!extension_loaded("spl")) die("skip");
+ if (!in_array("spl::array_access",spl_classes())) die("skip spl::array_access not present");
+?>
+--FILE--
+<?php
+class c implements spl::array_access {
+
+ public $a = array('1st', 1, 2=>'3rd', '4th'=>4);
+ function exists($index) {
+ echo __METHOD__ . "($index)\n";
+ return array_key_exists($index, $this->a);
+ }
+ function get($index) {
+ echo __METHOD__ . "($index)\n";
+ return $this->a[$index];
+ }
+ function set($index, $newval) {
+ echo __METHOD__ . "($index,$newval)\n";
+ /* return */ $this->a[$index] = $newval;
+ }
+}
+
+$obj = new c();
+
+var_dump($obj->a);
+
+var_dump($obj[0]);
+var_dump($obj[1]);
+var_dump($obj[2]);
+var_dump($obj['4th']);
+var_dump($obj['5th']);
+var_dump($obj[6]);
+
+echo "WRITE 1\n";
+$obj[1] = 'Changed 1';
+var_dump($obj[1]);
+echo "WRITE 2\n";
+$obj['4th'] = 'Changed 4th';
+var_dump($obj['4th']);
+echo "WRITE 3\n";
+$obj['5th'] = 'Added 5th';
+var_dump($obj['5th']);
+echo "WRITE 4\n";
+$obj[6] = 'Added 6';
+var_dump($obj[6]);
+
+var_dump($obj[0]);
+var_dump($obj[2]);
+
+$x = $obj[6] = 'changed 6';
+var_dump($obj[6]);
+var_dump($x);
+
+print "Done\n";
+?>
+--EXPECTF--
+array(4) {
+ [0]=>
+ string(3) "1st"
+ [1]=>
+ int(1)
+ [2]=>
+ string(3) "3rd"
+ ["4th"]=>
+ int(4)
+}
+c::exists(0)
+c::get(0)
+string(3) "1st"
+c::exists(1)
+c::get(1)
+int(1)
+c::exists(2)
+c::get(2)
+string(3) "3rd"
+c::exists(4th)
+c::get(4th)
+int(4)
+c::exists(5th)
+
+Notice: Undefined index: 5th in %s on line %d
+NULL
+c::exists(6)
+
+Notice: Undefined index: 6 in %s on line %d
+NULL
+WRITE 1
+c::exists(1)
+c::set(1,Changed 1)
+
+Warning: Method c::set() did not return a value, using NULL in %s on line %d
+c::exists(1)
+c::get(1)
+string(9) "Changed 1"
+WRITE 2
+c::exists(4th)
+c::set(4th,Changed 4th)
+
+Warning: Method c::set() did not return a value, using NULL in %s on line %d
+c::exists(4th)
+c::get(4th)
+string(11) "Changed 4th"
+WRITE 3
+c::exists(5th)
+c::set(5th,Added 5th)
+
+Warning: Method c::set() did not return a value, using NULL in %s on line %d
+c::exists(5th)
+c::get(5th)
+string(9) "Added 5th"
+WRITE 4
+c::exists(6)
+c::set(6,Added 6)
+
+Warning: Method c::set() did not return a value, using NULL in %s on line %d
+c::exists(6)
+c::get(6)
+string(7) "Added 6"
+c::exists(0)
+c::get(0)
+string(3) "1st"
+c::exists(2)
+c::get(2)
+string(3) "3rd"
+c::exists(6)
+c::set(6,changed 6)
+
+Warning: Method c::set() did not return a value, using NULL in %s on line %d
+c::exists(6)
+c::get(6)
+string(9) "changed 6"
+NULL
+Done