Skip to content

Commit

Permalink
MinifyVars: ignore static properties
Browse files Browse the repository at this point in the history
  • Loading branch information
JoshyPHP committed May 27, 2015
1 parent 3114251 commit 3040e10
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 10 deletions.
21 changes: 16 additions & 5 deletions bin/source-optimizer
Original file line number Diff line number Diff line change
Expand Up @@ -620,12 +620,23 @@ class MinifyVars extends Pass
{
$this->resetNames();
$this->stream->seek($startOffset);
while($this->stream->skipTo(\T_VARIABLE)&&$this->stream->key()<=$endOffset)
while($this->stream->valid()&&$this->stream->key()<=$endOffset)
{
$varName=$this->stream->currentText();
if(!isset($this->varNames[$varName]))
$this->varNames[$varName]=$this->getName($varName);
$this->stream->replace([\T_VARIABLE,$this->varNames[$varName]]);
if($this->stream->is(\T_DOUBLE_COLON))
{
$this->stream->next();
$this->stream->skipNoise();
$this->stream->next();
continue;
}
if($this->stream->is(\T_VARIABLE))
{
$varName=$this->stream->currentText();
if(!isset($this->varNames[$varName]))
$this->varNames[$varName]=$this->getName($varName);
$this->stream->replace([\T_VARIABLE,$this->varNames[$varName]]);
}
$this->stream->next();
}
}
protected function resetNames()
Expand Down
22 changes: 17 additions & 5 deletions src/Passes/MinifyVars.php
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,26 @@ protected function optimizeBlock($startOffset, $endOffset)
{
$this->resetNames();
$this->stream->seek($startOffset);
while ($this->stream->skipTo(T_VARIABLE) && $this->stream->key() <= $endOffset)
while ($this->stream->valid() && $this->stream->key() <= $endOffset)
{
$varName = $this->stream->currentText();
if (!isset($this->varNames[$varName]))
// Skip the next significant token after a double colon, e.g. foo::$bar
if ($this->stream->is(T_DOUBLE_COLON))
{
$this->varNames[$varName] = $this->getName($varName);
$this->stream->next();
$this->stream->skipNoise();
$this->stream->next();
continue;
}
$this->stream->replace([T_VARIABLE, $this->varNames[$varName]]);
if ($this->stream->is(T_VARIABLE))
{
$varName = $this->stream->currentText();
if (!isset($this->varNames[$varName]))
{
$this->varNames[$varName] = $this->getName($varName);
}
$this->stream->replace([T_VARIABLE, $this->varNames[$varName]]);
}
$this->stream->next();
}
}

Expand Down
13 changes: 13 additions & 0 deletions tests/Passes/MinifyVars/005.optimized.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

class foo
{
public static $bar = 'bar';
}

function bar()
{
echo foo::$bar;
}

bar();
13 changes: 13 additions & 0 deletions tests/Passes/MinifyVars/005.original.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

class foo
{
public static $bar = 'bar';
}

function bar()
{
echo foo::$bar;
}

bar();

0 comments on commit 3040e10

Please sign in to comment.