我在我的项目中使用PHP-Parser 。我想使用PHPUnit
'sassertEquals
函数比较两个节点。
尽管节点相同,但它给出了错误的结果。原因是,其中一个节点包含两个受保护的属性,而另一个不包含:
["attributes":protected]=>
array(2) {
["startLine"]=>
int(2)
["endLine"]=>
int(2)
}
是否可以比较不包括受保护属性的节点?
示例数据
第一个对象:
array(1) {
[0]=>
object(PhpParser\Node\Stmt\Expression)#5924 (2) {
["expr"]=>
object(PhpParser\Node\Expr\Assign)#5923 (3) {
["var"]=>
object(PhpParser\Node\Expr\Variable)#5918 (2) {
["name"]=>
string(1) "x"
["attributes":protected]=>
array(2) {
["startLine"]=>
int(2)
["endLine"]=>
int(2)
}
}
["expr"]=>
object(PhpParser\Node\Expr\ArrayDimFetch)#5922 (3) {
["var"]=>
object(PhpParser\Node\Expr\Variable)#5919 (2) {
["name"]=>
string(3) "arr"
["attributes":protected]=>
array(2) {
["startLine"]=>
int(2)
["endLine"]=>
int(2)
}
}
["dim"]=>
object(PhpParser\Node\Scalar\String_)#5934 (2) {
["value"]=>
string(3) "FOO"
["attributes":protected]=>
array(0) {
}
}
["attributes":protected]=>
array(2) {
["startLine"]=>
int(2)
["endLine"]=>
int(2)
}
}
["attributes":protected]=>
array(2) {
["startLine"]=>
int(2)
["endLine"]=>
int(2)
}
}
["attributes":protected]=>
array(2) {
["startLine"]=>
int(2)
["endLine"]=>
int(2)
}
}
}
第二个对象:
array(1) {
[0]=>
object(PhpParser\Node\Stmt\Expression)#5930 (2) {
["expr"]=>
object(PhpParser\Node\Expr\Assign)#5929 (3) {
["var"]=>
object(PhpParser\Node\Expr\Variable)#250 (2) {
["name"]=>
string(1) "x"
["attributes":protected]=>
array(2) {
["startLine"]=>
int(2)
["endLine"]=>
int(2)
}
}
["expr"]=>
object(PhpParser\Node\Expr\ArrayDimFetch)#5928 (3) {
["var"]=>
object(PhpParser\Node\Expr\Variable)#5926 (2) {
["name"]=>
string(3) "arr"
["attributes":protected]=>
array(2) {
["startLine"]=>
int(2)
["endLine"]=>
int(2)
}
}
["dim"]=>
object(PhpParser\Node\Scalar\String_)#5927 (2) {
["value"]=>
string(3) "FOO"
["attributes":protected]=>
array(3) {
["startLine"]=>
int(2)
["endLine"]=>
int(2)
["kind"]=>
int(1)
}
}
["attributes":protected]=>
array(2) {
["startLine"]=>
int(2)
["endLine"]=>
int(2)
}
}
["attributes":protected]=>
array(2) {
["startLine"]=>
int(2)
["endLine"]=>
int(2)
}
}
["attributes":protected]=>
array(2) {
["startLine"]=>
int(2)
["endLine"]=>
int(2)
}
}
}
注意PhpParser\Node\Scalar\String_
对象["value"]=> string(3) "FOO"