Prosiłbym o ocenę projektu. Prawie działający skrypt znajduje się pod adresem: http://kafaro.pl/Obfuscator/ - problem zauważony przez mlawnik
Pod tym adresem problem nie występuje : http://student.agh.edu.pl/~kafar/Obfuscator/ - nie czaję tego

Powiedzcie mi co jest nie tak, w jakich przypadkach daje błędne rezultaty i ewentualnie co jeszcze dodać do tego. Dzięki
Poniżej przedstawiam klasę na której się opiera projekt:
<?php /** * Klasa która zajmuje się zasyfianiem kodu */ class Obfuscator { private $text; private $obfuscated; private $stripComments; private $inOneLine; public function __construct($input_text) { $this->text = $input_text; } //Opcje public function setOptions($comments=false, $lines=false) { $this->stripComments = $comments; $this->inOneLine = $lines; } //Funkcja pomocnicza do wyświetlania tokenów public function printTokens() { $tokeny = token_get_all($this->text); foreach ($tokeny as $token) { } return $output; } /** * Główna funkcja zasyfiająca * */ public function makeUglyCode() { $tokeny = token_get_all($this->text); $atrFind = $fnFind = $classFind = false; foreach ($tokeny as $token) { switch ($token_name) { case T_COMMENT: if ($this->stripComments) { break; } else { ; } case T_FUNCTION: $fnFind = true; $this->obfuscated .= $token_value; break; case T_CLASS: $classFind = true; $this->obfuscated .= $token_value; break; case T_VARIABLE: if ($token_value == '$this') { $this->obfuscated .= $token_value; ; } else { $this->changeLabel($zmienna, "$"); } break; case T_STRING_VARNAME: $this->changeLabel($token_value); break; case T_DOUBLE_COLON: $this->removeLastToken($prevToken); $this->changeLabel($prevToken); $this->obfuscated .= $token_value; $atrFind = true; break; case T_OBJECT_OPERATOR: $atrFind = true; $this->obfuscated .= $token_value; break; case T_NEW: $classFind = true; $this->obfuscated .= $token_value; break; case T_STRING: if ($fnFind) { $this->changeLabel($token_value); $fnFind = false; break; } else if ($classFind) { $this->changeLabel($token_value); $classFind = false; break; } else if ($atrFind) { $this->changeLabel($token_value); $atrFind = false; break; } else { } } //ustaw bieżący wartosc tokena jako prevToken. Przydatne przy :: $prevToken = $token_value; } } private function changeLabel($txt, $type="") { $code.=$type; $obfuscated[$txt] = $code; $this->obfuscated .= $code; } public function getOutput() { if ($this->inOneLine) { } else { $output = $this->obfuscated; } return $output; } //funkcja usunie ostatni token. Przydatne przy :: private function removeLastToken($txt) { } } ?>