Skip to content

Commit 94f054e

Browse files
authored
Merge pull request #5 from Cheburon/CLOUD-11919-obfuscation-use-bug
fix use scramble
2 parents 0710c97 + 9ef2d0e commit 94f054e

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

src/Naneau/Obfuscator/Node/Visitor/ScrambleUse.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,6 @@ public function enterNode(Node $node)
138138
|| $node instanceof NewExpression
139139
|| $node instanceof InstanceOfExpression
140140
) {
141-
142141
// We need to be in a class for this to work
143142
if (empty($this->classNode)) {
144143
return;
@@ -160,6 +159,12 @@ public function enterNode(Node $node)
160159
if ($this->isRenamed($name)) {
161160
$node->class = new Name($this->getNewName($name));
162161
return $node;
162+
} else {
163+
if ($this->isRenamed($node->class->getFirst())) {
164+
reset($node->class->parts);
165+
$node->class->parts[key($node->class->parts)] = $this->getNewName($node->class->getFirst());
166+
return $node;
167+
}
163168
}
164169
}
165170
}

tests/before/Namespaces.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,26 @@ class classA {
66

77
}
88

9+
namespace namespaceC\namespaceD;
10+
11+
class classD {
12+
13+
}
14+
915
namespace namespaceB;
1016

1117
use namespaceA\classA as classC;
18+
use namespaceC\namespaceD as namespaceDAlias;
1219

1320
class classB {
1421

1522
private $_objectA;
1623

24+
private $_objectB;
25+
1726
public function __construct() {
1827
$this->_objectA = new classC();
28+
$this->_objectB = new namespaceDAlias\classD();
1929
}
20-
}
30+
}
31+

tests/expected/Namespaces.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
<?php
2-
namespace namespaceA; class classA { } namespace namespaceB; use namespaceA\classA as spf0f507; class classB { private $spa26210; public function __construct() { $this->spa26210 = new spf0f507(); } }
2+
namespace namespaceA; class classA { } namespace namespaceC\namespaceD; class classD { } namespace namespaceB; use namespaceA\classA as spf0f507; use namespaceC\namespaceD as sp63627e; class classB { private $spa26210; private $sp2e1034; public function __construct() { $this->spa26210 = new spf0f507(); $this->sp2e1034 = new sp63627e\classD(); } }

0 commit comments

Comments
 (0)