php-src/Zend/tests/list/list_reference_005.phpt
David Walker 6d4de4cf05 Implement list() reference assignments
Support list() reference assignments of the form:

    list(&$a, list(&$b, $c)) = $d;

RFC: https://wiki.php.net/rfc/list_reference_assignment
2017-12-09 13:39:52 +01:00

74 lines
980 B
PHP

--TEST--
"Reference Unpacking - Class Property and Methods" list()
--FILE--
<?php
class A {
public $a = [['hello']];
public $b = ['world'];
public function getVar() {
return $this->a;
}
public function &getVarRef() {
return $this->a;
}
}
class B {
static $a = [['world']];
}
$a = new A();
[&$var] = $a->a;
[&$var_too] = $a->b;
var_dump($a->a);
var_dump($a->b);
$a = new A();
[&$var] = $a->getVar();
var_dump($a->a);
$a = new A();
[&$var] = $a->getVarRef();
var_dump($a->a);
[&$var] = B::$a;
var_dump(B::$a);
?>
--EXPECTF--
array(1) {
[0]=>
&array(1) {
[0]=>
string(5) "hello"
}
}
array(1) {
[0]=>
&string(5) "world"
}
Notice: Attempting to set reference to non referenceable value in %s on line %d
array(1) {
[0]=>
array(1) {
[0]=>
string(5) "hello"
}
}
array(1) {
[0]=>
&array(1) {
[0]=>
string(5) "hello"
}
}
array(1) {
[0]=>
&array(1) {
[0]=>
string(5) "world"
}
}