mirror of
https://github.com/php/php-src.git
synced 2024-09-21 09:57:23 +00:00
6d4de4cf05
Support list() reference assignments of the form: list(&$a, list(&$b, $c)) = $d; RFC: https://wiki.php.net/rfc/list_reference_assignment
74 lines
980 B
PHP
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"
|
|
}
|
|
}
|