- 实现 addClass 方法用于添加类定义到编译器 - 优化 hasNativeClass 和 getClassDef 方法使用 escapeClass 处理类名 - 更新 escapeClass 方法支持反斜杠替换为下划线并去除首尾反斜杠 - 重构 getPropertyIdentifier 方法简化属性标识符获取逻辑 - 新增 findNativeProperty 方法实现原生属性查找功能 - 添加对私有、受保护和公共属性的访问权限检查 - 支持继承链中属性的向上查找功能 - 为 get_class_vars 函数添加完整的测试用例覆盖pull/1/head
parent
ac3351b5f4
commit
095f9e8c66
4 changed files with 147 additions and 28 deletions
@ -0,0 +1,40 @@ |
||||
--TEST-- |
||||
get_class_vars(): Simple test |
||||
--FILE-- |
||||
<?php |
||||
|
||||
class A { |
||||
public $a = 1; |
||||
private $b = 2; |
||||
private $c = 3; |
||||
} |
||||
|
||||
class B extends A { |
||||
static public $aa = 4; |
||||
static private $bb = 5; |
||||
static protected $cc = 6; |
||||
} |
||||
|
||||
function main() { |
||||
var_dump(get_class_vars('A')); |
||||
var_dump(get_class_vars('B')); |
||||
|
||||
try { |
||||
get_class_vars("Unknown"); |
||||
} catch (Error $e) { |
||||
echo $e->getMessage(), "\n"; |
||||
} |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
array(1) { |
||||
["a"]=> |
||||
int(1) |
||||
} |
||||
array(2) { |
||||
["a"]=> |
||||
int(1) |
||||
["aa"]=> |
||||
int(4) |
||||
} |
||||
get_class_vars(): Argument #1 ($class) must be a valid class name, Unknown given |
||||
@ -0,0 +1,48 @@ |
||||
--TEST-- |
||||
get_class_vars(): Testing the scope |
||||
--FILE-- |
||||
<?php |
||||
|
||||
class A { |
||||
public $a = 1; |
||||
protected $b = 2; |
||||
} |
||||
|
||||
class B extends A { |
||||
static public $aa = 4; |
||||
static private $bb = 5; |
||||
static protected $cc = 6; |
||||
} |
||||
|
||||
class C extends B { |
||||
public function __construct() { |
||||
var_dump(get_class_vars('A')); |
||||
var_dump(get_class_vars('B')); |
||||
|
||||
var_dump($this->a, $this->b); |
||||
} |
||||
} |
||||
|
||||
function main() { |
||||
new C; |
||||
} |
||||
?> |
||||
--EXPECTF-- |
||||
array(2) { |
||||
["a"]=> |
||||
int(1) |
||||
["b"]=> |
||||
int(2) |
||||
} |
||||
array(4) { |
||||
["a"]=> |
||||
int(1) |
||||
["b"]=> |
||||
int(2) |
||||
["aa"]=> |
||||
int(4) |
||||
["cc"]=> |
||||
int(6) |
||||
} |
||||
int(1) |
||||
int(2) |
||||
Loading…
Reference in new issue