- 在属性访问时检查未定义变量并报告错误 - 初始化类对象处理器以支持对象操作 - 添加对未定义变量属性访问的测试用例 - 添加对未定义变量方法调用的测试用例 - 为动态代码中的类型化属性取消设置添加测试pull/3/head
parent
72cf8e7166
commit
e6c3e22f6e
5 changed files with 77 additions and 1 deletions
@ -0,0 +1,29 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
class FooBase { |
||||||
|
function bar() |
||||||
|
{ |
||||||
|
var_dump(__CLASS__); |
||||||
|
} |
||||||
|
function doSomething() { |
||||||
|
$this->bar(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
class FooChild extends FooBase { |
||||||
|
function bar() |
||||||
|
{ |
||||||
|
var_dump(__CLASS__); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function bar(FooBase $o) |
||||||
|
{ |
||||||
|
$o->doSomething(); |
||||||
|
} |
||||||
|
|
||||||
|
function main() { |
||||||
|
$o = new FooChild(); |
||||||
|
$o2 = any($o); |
||||||
|
bar($o2); |
||||||
|
} |
||||||
@ -0,0 +1,28 @@ |
|||||||
|
--TEST-- |
||||||
|
unset typed property via dynamic code |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
class FooObject { |
||||||
|
public int $value = 42; |
||||||
|
} |
||||||
|
|
||||||
|
function main() { |
||||||
|
$base = new FooObject(); |
||||||
|
$base->value += 1; |
||||||
|
var_dump($base->value); |
||||||
|
|
||||||
|
eval('function test(FooObject $obj) { |
||||||
|
unset($obj->value); |
||||||
|
}'); |
||||||
|
|
||||||
|
test($base); |
||||||
|
var_dump($base->value); |
||||||
|
|
||||||
|
echo "done\n"; |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
int(43) |
||||||
|
int(0) |
||||||
|
done |
||||||
Loading…
Reference in new issue