php-src/Zend/tests/dereference_014.phpt
Nikita Popov c42b7dd6d3 Throw notice on array access on illegal type
No notice is thrown for list() accesses, because we did not come
to an agreement regarding patterns like

    while ([$key, $value] = yield $it->next()) { ... }

where silent null access may be desirable.

No effort is made to suppress multiple notices in access chains
likes $x[0][0][0], because the technical complexity this causes
does not seem worthwhile.

RFC: https://wiki.php.net/rfc/notice-for-non-valid-array-container
2019-07-10 12:02:14 +02:00

39 lines
667 B
PHP

--TEST--
Trying to create an object from dereferencing uninitialized variable
--FILE--
<?php
error_reporting(E_ALL);
class foo {
public $x;
static public $y;
public function a() {
return $this->x;
}
static public function b() {
return self::$y;
}
}
$foo = new foo;
$h = $foo->a()[0]->a;
var_dump($h);
$h = foo::b()[1]->b;
var_dump($h);
?>
--EXPECTF--
Notice: Trying to access array offset on value of type null in %s on line %d
Notice: Trying to get property 'a' of non-object in %s on line %d
NULL
Notice: Trying to access array offset on value of type null in %s on line %d
Notice: Trying to get property 'b' of non-object in %s on line %d
NULL