Skip to content

Commit 867b96e

Browse files
committed
Use nikic/PHP-Parser ~2.0
1 parent b595ed0 commit 867b96e

File tree

8 files changed

+63
-76
lines changed

8 files changed

+63
-76
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
],
99

1010
"require": {
11-
"nikic/php-parser": "~1.2",
11+
"nikic/php-parser": "~2.1",
1212
"beberlei/assert": "~2.3",
1313
"andrewsville/php-token-reflection": "~1.4",
1414
"symfony/finder": "~2.4",

composer.lock

Lines changed: 18 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/QafooLabs/Refactoring/Adapters/PHPParser/ParserPhpNameScanner.php

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,26 @@
22

33
namespace QafooLabs\Refactoring\Adapters\PHPParser;
44

5+
use PhpParser\NodeTraverser;
6+
use PhpParser\ParserFactory;
57
use QafooLabs\Refactoring\Adapters\PHPParser\Visitor\PhpNameCollector;
68
use QafooLabs\Refactoring\Domain\Services\PhpNameScanner;
79
use QafooLabs\Refactoring\Domain\Model\File;
8-
use QafooLabs\Refactoring\Domain\Model\LineRange;
9-
use QafooLabs\Refactoring\Domain\Model\UseStatement;
1010
use QafooLabs\Refactoring\Domain\Model\PhpName;
1111
use QafooLabs\Refactoring\Domain\Model\PhpNameOccurance;
1212

13-
use PHPParser_Parser;
14-
use PHPParser_Lexer;
15-
use PHPParser_NodeTraverser;
16-
use PHPParser_Error;
17-
1813
class ParserPhpNameScanner implements PhpNameScanner
1914
{
2015
public function findNames(File $file)
2116
{
22-
$parser = new PHPParser_Parser(new PHPParser_Lexer());
17+
$parserFactory = new ParserFactory();
18+
$parser = $parserFactory->create(ParserFactory::PREFER_PHP7);
2319
$collector = new PhpNameCollector();
24-
$traverser = new PHPParser_NodeTraverser;
20+
$traverser = new NodeTraverser();
2521

2622
try {
2723
$stmts = $parser->parse($file->getCode());
28-
} catch (PHPParser_Error $e) {
24+
} catch (\PHPParser\Error $e) {
2925
throw new \RuntimeException("Error parsing " . $file->getRelativePath() .": " . $e->getMessage(), 0, $e);
3026
}
3127

src/main/QafooLabs/Refactoring/Adapters/PHPParser/ParserVariableScanner.php

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
namespace QafooLabs\Refactoring\Adapters\PHPParser;
1616

17+
use PhpParser\NodeTraverser;
18+
use PhpParser\ParserFactory;
1719
use QafooLabs\Refactoring\Domain\Model\LineRange;
1820
use QafooLabs\Refactoring\Domain\Model\File;
1921
use QafooLabs\Refactoring\Domain\Model\DefinedVariables;
@@ -23,23 +25,17 @@
2325
use QafooLabs\Refactoring\Adapters\PHPParser\Visitor\LocalVariableClassifier;
2426
use QafooLabs\Refactoring\Adapters\PHPParser\Visitor\NodeConnector;
2527

26-
use PHPParser_Parser;
27-
use PHPParser_Lexer;
28-
use PHPParser_Node;
29-
use PHPParser_Node_Stmt;
30-
use PHPParser_Node_Expr_FuncCall;
31-
use PHPParser_NodeTraverser;
32-
3328
class ParserVariableScanner implements VariableScanner
3429
{
3530
public function scanForVariables(File $file, LineRange $range)
3631
{
37-
$parser = new PHPParser_Parser(new PHPParser_Lexer());
32+
$parserFactory = new ParserFactory();
33+
$parser = $parserFactory->create(ParserFactory::PREFER_PHP7);
3834
$stmts = $parser->parse($file->getCode());
3935

4036
$collector = new LineRangeStatementCollector($range);
4137

42-
$traverser = new PHPParser_NodeTraverser;
38+
$traverser = new NodeTraverser();
4339
$traverser->addVisitor(new NodeConnector);
4440
$traverser->addVisitor($collector);
4541

@@ -52,7 +48,7 @@ public function scanForVariables(File $file, LineRange $range)
5248
}
5349

5450
$localVariableClassifier = new LocalVariableClassifier();
55-
$traverser = new PHPParser_NodeTraverser;
51+
$traverser = new NodeTraverser();
5652
$traverser->addVisitor($localVariableClassifier);
5753
$traverser->traverse($selectedStatements);
5854

src/main/QafooLabs/Refactoring/Adapters/PHPParser/Visitor/LineRangeStatementCollector.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,14 @@
1414

1515
namespace QafooLabs\Refactoring\Adapters\PHPParser\Visitor;
1616

17+
use PhpParser\Node;
18+
use PhpParser\NodeVisitorAbstract;
1719
use QafooLabs\Refactoring\Domain\Model\LineRange;
18-
use PHPParser_Node;
19-
use PHPParser_Node_Stmt;
20-
use PHPParser_Node_Expr_FuncCall;
2120

2221
/**
2322
* Given a line range, collect the AST slice that is inside that range.
2423
*/
25-
class LineRangeStatementCollector extends \PHPParser_NodeVisitorAbstract
24+
class LineRangeStatementCollector extends NodeVisitorAbstract
2625
{
2726
/**
2827
* @var LineRange
@@ -36,7 +35,7 @@ public function __construct(LineRange $lineRange)
3635
$this->statements = new \SplObjectStorage();
3736
}
3837

39-
public function enterNode(PHPParser_Node $node)
38+
public function enterNode(Node $node)
4039
{
4140
if ( ! $this->lineRange->isInRange($node->getLine())) {
4241
return;

src/main/QafooLabs/Refactoring/Adapters/PHPParser/Visitor/LocalVariableClassifier.php

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,15 @@
1414

1515
namespace QafooLabs\Refactoring\Adapters\PHPParser\Visitor;
1616

17-
use PHPParser_Node;
18-
use PHPParser_NodeVisitorAbstract;
19-
use PHPParser_Node_Expr_Variable;
20-
use PHPParser_Node_Expr_Assign;
21-
use PHPParser_Node_Expr_ArrayDimFetch;
22-
use PHPParser_Node_Param;
17+
use PhpParser\Node;
18+
use PhpParser\NodeVisitorAbstract;
2319
use SplObjectStorage;
2420

2521
/**
2622
* Classify local variables into assignments and usages,
2723
* permanent and temporary variables.
2824
*/
29-
class LocalVariableClassifier extends PHPParser_NodeVisitorAbstract
25+
class LocalVariableClassifier extends NodeVisitorAbstract
3026
{
3127
private $localVariables = array();
3228
private $assignments = array();
@@ -37,40 +33,40 @@ public function __construct()
3733
$this->seenAssignmentVariables = new SplObjectStorage();
3834
}
3935

40-
public function enterNode(PHPParser_Node $node)
36+
public function enterNode(Node $node)
4137
{
42-
if ($node instanceof PHPParser_Node_Expr_Variable) {
38+
if ($node instanceof Node\Expr\Variable) {
4339
$this->enterVariableNode($node);
4440
}
4541

46-
if ($node instanceof PHPParser_Node_Expr_Assign) {
42+
if ($node instanceof Node\Expr\Assign) {
4743
$this->enterAssignment($node);
4844
}
4945

50-
if ($node instanceof PHPParser_Node_Param) {
46+
if ($node instanceof Node\Param) {
5147
$this->enterParam($node);
5248
}
5349
}
5450

55-
private function enterParam($node)
51+
private function enterParam(Node\Param $node)
5652
{
5753
$this->assignments[$node->name][] = $node->getLine();
5854
}
5955

60-
private function enterAssignment($node)
56+
private function enterAssignment(Node\Expr\Assign $node)
6157
{
62-
if ($node->var instanceof PHPParser_Node_Expr_Variable) {
58+
if ($node->var instanceof Node\Expr\Variable) {
6359
$this->assignments[$node->var->name][] = $node->getLine();
6460
$this->seenAssignmentVariables->attach($node->var);
65-
} else if ($node->var instanceof PHPParser_Node_Expr_ArrayDimFetch) {
61+
} else if ($node instanceof Node\Expr\ArrayDimFetch) {
6662
// $foo[] = "baz" is both a read and a write access to $foo
6763
$this->localVariables[$node->var->var->name][] = $node->getLine();
6864
$this->assignments[$node->var->var->name][] = $node->getLine();
6965
$this->seenAssignmentVariables->attach($node->var->var);
7066
}
7167
}
7268

73-
private function enterVariableNode($node)
69+
private function enterVariableNode(Node\Expr\Variable $node)
7470
{
7571
if ($node->name === "this" || $this->seenAssignmentVariables->contains($node)) {
7672
return;

src/main/QafooLabs/Refactoring/Adapters/PHPParser/Visitor/NodeConnector.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,21 @@
1313

1414
namespace QafooLabs\Refactoring\Adapters\PHPParser\Visitor;
1515

16-
use PHPParser_NodeVisitorAbstract;
17-
use PHPParser_Node;
16+
use PhpParser\Node;
17+
use PhpParser\NodeVisitorAbstract;
1818

1919
/**
2020
* Connects the nodes.
2121
*
2222
* @author Johannes M. Schmitt <[email protected]>
2323
*/
24-
class NodeConnector extends PHPParser_NodeVisitorAbstract
24+
class NodeConnector extends NodeVisitorAbstract
2525
{
26-
public function enterNode(PHPParser_Node $node)
26+
public function enterNode(Node $node)
2727
{
2828
$subNodes = array();
2929
foreach ($node as $subNode) {
30-
if ($subNode instanceof PHPParser_Node) {
30+
if ($subNode instanceof Node) {
3131
$subNodes[] = $subNode;
3232
continue;
3333
} else if (!is_array($subNode)) {
@@ -38,7 +38,7 @@ public function enterNode(PHPParser_Node $node)
3838
}
3939

4040
for ($i=0,$c=count($subNodes); $i<$c; $i++) {
41-
if (!$subNodes[$i] instanceof PHPParser_Node) {
41+
if (!$subNodes[$i] instanceof Node) {
4242
continue;
4343
}
4444

src/main/QafooLabs/Refactoring/Adapters/PHPParser/Visitor/PhpNameCollector.php

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,13 @@
1313

1414
namespace QafooLabs\Refactoring\Adapters\PHPParser\Visitor;
1515

16-
use PHPParser_Node;
17-
use PHPParser_Node_Name;
18-
use PHPParser_Node_Stmt_Namespace;
19-
use PHPParser_Node_Stmt_Use;
20-
use PHPParser_Node_Stmt_Class;
21-
use PHPParser_Node_Stmt_UseUse;
22-
use PHPParser_Node_Expr_New;
23-
use PHPParser_Node_Expr_StaticCall;
16+
use PhpParser\Node;
17+
use PhpParser\NodeVisitorAbstract;
2418

2519
/**
2620
* Visitor for PHP Parser collecting PHP Names from an AST.
2721
*/
28-
class PhpNameCollector extends \PHPParser_NodeVisitorAbstract
22+
class PhpNameCollector extends NodeVisitorAbstract
2923
{
3024
/**
3125
* @var array
@@ -40,11 +34,11 @@ class PhpNameCollector extends \PHPParser_NodeVisitorAbstract
4034
*/
4135
private $currentNamespace;
4236

43-
public function enterNode(PHPParser_Node $node)
37+
public function enterNode(Node $node)
4438
{
45-
if ($node instanceof PHPParser_Node_Stmt_Use) {
39+
if ($node instanceof Node\Stmt\Use_) {
4640
foreach ($node->uses as $use) {
47-
if ($use instanceof PHPParser_Node_Stmt_UseUse) {
41+
if ($use instanceof Node\Stmt\UseUse) {
4842
$name = implode('\\', $use->name->parts);
4943

5044
$this->useStatements[$use->alias] = $name;
@@ -59,7 +53,7 @@ public function enterNode(PHPParser_Node $node)
5953
}
6054

6155

62-
if ($node instanceof PHPParser_Node_Expr_New && $node->class instanceof PHPParser_Node_Name) {
56+
if ($node instanceof Node\Expr\New_ && $node->class instanceof Node\Name) {
6357
$usedAlias = implode('\\', $node->class->parts);
6458

6559
$this->nameDeclarations[] = array(
@@ -70,7 +64,7 @@ public function enterNode(PHPParser_Node $node)
7064
);
7165
}
7266

73-
if ($node instanceof PHPParser_Node_Expr_StaticCall && $node->class instanceof PHPParser_Node_Name) {
67+
if ($node instanceof Node\Expr\StaticCall && $node->class instanceof Node\Name) {
7468
$usedAlias = implode('\\', $node->class->parts);
7569

7670
$this->nameDeclarations[] = array(
@@ -81,7 +75,7 @@ public function enterNode(PHPParser_Node $node)
8175
);
8276
}
8377

84-
if ($node instanceof PHPParser_Node_Stmt_Class) {
78+
if ($node instanceof Node\Stmt\Class_) {
8579
$className = $node->name;
8680

8781
$this->nameDeclarations[] = array(
@@ -114,7 +108,7 @@ public function enterNode(PHPParser_Node $node)
114108
}
115109
}
116110

117-
if ($node instanceof PHPParser_Node_Stmt_Namespace) {
111+
if ($node instanceof Node\Stmt\Namespace_) {
118112
$this->currentNamespace = implode('\\', $node->name->parts);
119113
$this->useStatements = array();
120114

0 commit comments

Comments
 (0)