Skip to content

Instantly share code, notes, and snippets.

@codex-corp
Last active August 29, 2015 14:12
Show Gist options
  • Select an option

  • Save codex-corp/a1646c14b1b1fd02cc09 to your computer and use it in GitHub Desktop.

Select an option

Save codex-corp/a1646c14b1b1fd02cc09 to your computer and use it in GitHub Desktop.

Revisions

  1. codex-corp revised this gist Dec 28, 2014. 1 changed file with 1 addition and 2 deletions.
    3 changes: 1 addition & 2 deletions ScrambleVariable.php
    Original file line number Diff line number Diff line change
    @@ -14,8 +14,7 @@ class ScrambleVariable extends ScramblerVisitor
    public function __construct(StringScrambler $scrambler)
    {
    parent::__construct($scrambler);
    $this->setIgnore(array("_ENV","PHPSESSID","PHP_SELF","GLOBALS",
    "_COOKIE","_GET","_POST",
    $this->setIgnore(array("_ENV","PHPSESSID","PHP_SELF","GLOBALS","_COOKIE","_GET","_POST",
    "_SESSION","_FILES","_REQUEST","_SERVER","this"));
    }

  2. codex-corp created this gist Dec 28, 2014.
    67 changes: 67 additions & 0 deletions ScrambleVariable.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,67 @@
    <?php

    class ScrambleVariable extends ScramblerVisitor
    {
    use TrackingRenamerTrait;
    use ReportArraysTrait;

    /**
    * Constructor
    *
    * @param StringScrambler $scrambler
    * @return void
    **/
    public function __construct(StringScrambler $scrambler)
    {
    parent::__construct($scrambler);
    $this->setIgnore(array("_ENV","PHPSESSID","PHP_SELF","GLOBALS",
    "_COOKIE","_GET","_POST",
    "_SESSION","_FILES","_REQUEST","_SERVER","this"));
    }

    /**
    * Check all variable nodes
    *
    * @param Node $node
    * @return void
    **/
    public function enterNode(Node $node)
    {
    // Function param or variable use
    if ($node instanceof Param || $node instanceof Variable) {

    if (!is_string($node->name)) {
    return;
    }

    if ($this->isRenamed($node->name)) {
    $node->name = $this->getNewName($node->name);
    return $node;
    }
    }

    // try {} catch () {}
    if ($node instanceof CatchStatement) {

    return $this->scramble($node, 'var');
    }

    // Function() use ($x, $y) {}
    if ($node instanceof ClosureUse) {
    return $this->scramble($node, 'var');
    }
    }

    public function leaveNode(Node $node) {
    if ($node instanceof Param || $node instanceof Variable) {

    $originalName = $node->name;

    if(!in_array($originalName, $this->getRenamed())){
    $this->scramble($node);

    $this->renamed($originalName, $node->name);
    }
    }
    }
    }