mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
add test for bug
This commit is contained in:
parent
373da7aa6f
commit
1a75cd29a2
61
Zend/tests/bug71359.phpt
Normal file
61
Zend/tests/bug71359.phpt
Normal file
@ -0,0 +1,61 @@
|
||||
--TEST--
|
||||
Bug #71359: Null coalescing operator and magic
|
||||
--FILE--
|
||||
<?php
|
||||
class AA {
|
||||
private $data = [];
|
||||
public function __isset($name) {
|
||||
echo "__isset($name)\n";
|
||||
return array_key_exists($name, $this->data);
|
||||
}
|
||||
public function &__get($name) {
|
||||
echo "__get($name)\n";
|
||||
if (!array_key_exists($name, $this->data)) {
|
||||
throw new Exception('Unknown offset');
|
||||
}
|
||||
return $this->data[$name];
|
||||
}
|
||||
public function __set($name, $value) {
|
||||
echo "__set($name)\n";
|
||||
$this->data[$name] = $value;
|
||||
}
|
||||
public function __unset($name) {
|
||||
echo "__unset($name)\n";
|
||||
unset($this->data[$name]);
|
||||
}
|
||||
}
|
||||
|
||||
$aa = new AA;
|
||||
var_dump(isset($aa->zero->one->two));
|
||||
var_dump(isset($aa->zero->foo));
|
||||
var_dump($aa->zero ?? 42);
|
||||
var_dump($aa->zero->one->two ?? 42);
|
||||
$aa->zero = new AA;
|
||||
$aa->zero->one = new AA;
|
||||
var_dump(isset($aa->zero->one->two));
|
||||
var_dump($aa->zero->one->two ?? 42);
|
||||
?>
|
||||
--EXPECT--
|
||||
__isset(zero)
|
||||
bool(false)
|
||||
__isset(zero)
|
||||
bool(false)
|
||||
__isset(zero)
|
||||
int(42)
|
||||
__isset(zero)
|
||||
int(42)
|
||||
__set(zero)
|
||||
__get(zero)
|
||||
__set(one)
|
||||
__isset(zero)
|
||||
__get(zero)
|
||||
__isset(one)
|
||||
__get(one)
|
||||
__isset(two)
|
||||
bool(false)
|
||||
__isset(zero)
|
||||
__get(zero)
|
||||
__isset(one)
|
||||
__get(one)
|
||||
__isset(two)
|
||||
int(42)
|
Loading…
Reference in New Issue
Block a user