- 实现了static::method()静态方法调用的编译支持 - 添加了new static()动态实例化的处理逻辑 - 增加了static属性访问的正确解析 - 添加了两个新的AOT测试用例验证static功能 - 实现了延迟解析以支持后期绑定行为pull/1/head
parent
cebe50121a
commit
d8e164b32c
3 changed files with 92 additions and 4 deletions
@ -0,0 +1,34 @@ |
||||
--TEST-- |
||||
class static 003 |
||||
--FILE-- |
||||
<?php |
||||
namespace Test { |
||||
class Worker1 |
||||
{ |
||||
static function hello() |
||||
{ |
||||
return new static(); |
||||
} |
||||
|
||||
static function foo() |
||||
{ |
||||
return self::hello(); |
||||
} |
||||
} |
||||
|
||||
class Worker2 extends Worker1 |
||||
{ |
||||
} |
||||
} |
||||
|
||||
namespace { |
||||
use Test\Worker2; |
||||
function main() |
||||
{ |
||||
$o = Worker2::foo(); |
||||
var_dump(get_class($o)); |
||||
} |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
string(12) "Test\Worker2" |
||||
@ -0,0 +1,43 @@ |
||||
--TEST-- |
||||
class static 004 |
||||
--FILE-- |
||||
<?php |
||||
namespace Test { |
||||
class Worker1 |
||||
{ |
||||
static string $var = 'hello'; |
||||
|
||||
static function foo() |
||||
{ |
||||
var_dump(self::$var); |
||||
var_dump(static::$var); |
||||
} |
||||
|
||||
static function bar() |
||||
{ |
||||
static::$var = 'world'; |
||||
} |
||||
} |
||||
|
||||
class Worker2 extends Worker1 |
||||
{ |
||||
static string $var = 'swoole'; |
||||
} |
||||
} |
||||
|
||||
namespace { |
||||
use Test\Worker2; |
||||
function main() |
||||
{ |
||||
Worker2::foo(); |
||||
Worker2::bar(); |
||||
Worker2::foo(); |
||||
} |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
string(5) "hello" |
||||
string(6) "swoole" |
||||
string(5) "hello" |
||||
string(5) "world" |
||||
|
||||
Loading…
Reference in new issue