$command->option('s')->aka('standard')->describedAs('naming standard, avalible standards are: psr0, yaf_controller')->must(function ($standard) { $standards = array('psr0', 'yaf_controller'); return in_array($standard, $standards); }); $command->option('i')->aka('input')->describedAs("Regex to match input files, default is '/\\.php\$/'"); $command->option('t')->aka('target')->describedAs('if you want to rename class or method, specify target here: class, method')->must(function ($target) { $targets = array('class', 'method'); return in_array($target, $targets); }); $command->option('p')->aka('pattern')->describedAs('pattern to match your class name or method name'); $command->option('r')->aka('replace')->describedAs('replacement to replace your class or method name'); if ($command['t']) { $command->option('p')->require(); $command->option('r')->require(); } $command->parse(); /* do process */ if (!file_exists($command[1])) { mkdir($command[1], 0755, true); } $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($command[0])); $regex = $command['input'] ?: '/\\.php$/'; $files = new RegexIterator($files, $regex); $parser = new PHPParser_Parser(new PHPParser_Lexer()); $traverser = new PHPParser_NodeTraverser(); $visitor = new Refactool_Rename(); $visitor->setOption($command); $traverser->addVisitor($visitor); foreach ($files as $file) { $code = file_get_contents($file); $stmts = $parser->parse($code);