1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00
Files
archived-php-src/Zend/tests/list/list_keyed_ArrayAccess.phpt
DanielEScherzer 275f63e7fd Zend/tests: organize some tests with subdirectories (2) (#16423)
Move more low-hanging fruit, creating new directories for the tests for:

* comparisons
* dynamic calls
* error messages
* `error_reporting()`
* exceptions
* `foreach()`
* garbage collection
* group `use` statements
* heredoc and nowdoc
* `goto` jumps
* late static binding
* magic methods
* namespaces
* numeric literal separators
* objects
* `settype()`
* cleaning of temporary values
* `unset()`

Additionally, move some tests into the existing subdirectory for `list()`
tests.

Drive-by fixes of some test numbers in the names of the `goto` tests.

Work towards GH-15631
2024-10-14 12:14:42 +01:00

56 lines
1.1 KiB
PHP

--TEST--
list() with keys and ArrayAccess
--FILE--
<?php
$antonymObject = new ArrayObject;
$antonymObject["good"] = "bad";
$antonymObject["happy"] = "sad";
list("good" => $good, "happy" => $happy) = $antonymObject;
var_dump($good, $happy);
echo PHP_EOL;
$stdClassCollection = new SplObjectStorage;
$foo = new StdClass;
$stdClassCollection[$foo] = "foo";
$bar = new StdClass;
$stdClassCollection[$bar] = "bar";
list($foo => $fooStr, $bar => $barStr) = $stdClassCollection;
var_dump($fooStr, $barStr);
echo PHP_EOL;
class IndexPrinter implements ArrayAccess
{
public function offsetGet($offset): mixed {
echo "GET ";
var_dump($offset);
return null;
}
public function offsetSet($offset, $value): void {
}
public function offsetExists($offset): bool {
}
public function offsetUnset($offset): void {
}
}
$op = new IndexPrinter;
list(123 => $x) = $op;
// PHP shouldn't convert this to an integer offset, because it's ArrayAccess
list("123" => $x) = $op;
?>
--EXPECT--
string(3) "bad"
string(3) "sad"
string(3) "foo"
string(3) "bar"
GET int(123)
GET string(3) "123"