- 在 ArgInfo 类中添加 nullable 属性用于标识参数是否可空 - 在 ClassDef 类中添加 inheritedFromInternalClass 属性用于标记是否继承自内部类 - 实现对继承自内部类的动态方法调用支持 - 添加 Reflection::isInternalClass 方法用于判断类是否为内部类 - 添加 Reflection::hasMethod 方法用于检查类是否存在指定方法 - 在参数解析时设置 nullable 标志 - 修改编译器基类以支持内部类继承的错误处理 - 更新翻译器以正确处理可空参数的调用逻辑pull/1/head
parent
86055c3bf1
commit
096a92a62e
7 changed files with 130 additions and 5 deletions
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
class A |
||||
{ |
||||
public function __construct() |
||||
{ |
||||
echo "A::__construct()\n"; |
||||
} |
||||
} |
||||
|
||||
class B extends A |
||||
{ |
||||
public function __construct() |
||||
{ |
||||
parent::__construct(); |
||||
echo "B::__construct()\n"; |
||||
} |
||||
|
||||
public function foo() |
||||
{ |
||||
|
||||
var_dump(__METHOD__); |
||||
} |
||||
} |
||||
|
||||
class C extends ArrayObject { |
||||
|
||||
} |
||||
|
||||
function main() |
||||
{ |
||||
$o = new B; |
||||
$o->foo(); |
||||
|
||||
$c = new C; |
||||
$c->offsetSet(0, 1); |
||||
$c->offsetSet(1, 2); |
||||
var_dump($c); |
||||
var_dump($c->foo()); |
||||
} |
||||
@ -0,0 +1,24 @@ |
||||
--TEST-- |
||||
extends redis |
||||
--FILE-- |
||||
<?php |
||||
class MyRedis extends \redis |
||||
{ |
||||
public function __construct(?array $options = null) |
||||
{ |
||||
parent::__construct($options); |
||||
} |
||||
} |
||||
|
||||
function main() |
||||
{ |
||||
$o = new MyRedis; |
||||
$o->connect('127.0.0.1', 6379); |
||||
$uuid = uniqid(); |
||||
var_dump($o->set('key', $uuid)); |
||||
var_dump($o->get('key') === $uuid); |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
bool(true) |
||||
bool(true) |
||||
Loading…
Reference in new issue