protected function execute(InputInterface $input, OutputInterface $output) { $file = File::createFromPath($input->getArgument('file'), getcwd()); $range = LineRange::fromString($input->getArgument('range')); $newMethodName = $input->getArgument('newmethod'); $scanner = new ParserVariableScanner(); $codeAnalysis = new StaticCodeAnalysis(); $editor = new PatchEditor(new OutputPatchCommand($output)); $extractMethod = new ExtractMethod($scanner, $codeAnalysis, $editor); $extractMethod->refactor($file, $range, $newMethodName); }
/** * @group regression * @group GH-4 */ public function testVariableUsedBeforeAndAfterExtractedSlice() { $this->markTestIncomplete('Failing over some invisible whitespace issue?'); $patch = $this->refactoring->refactor(new File("foo.php", <<<'PHP' <?php class Foo { public function main() { $foo = "bar"; $baz = array(); $foo = strtolower($foo); $baz[] = $foo; return new Something($foo, $baz); } } PHP ), LineRange::fromString("9-10"), "extract"); \Phake::verify($this->applyCommand)->apply(<<<'CODE' --- a/foo.php +++ b/foo.php @@ -6,9 +6,16 @@ $foo = "bar"; $baz = array(); + list($foo, $baz) = $this->extract($foo, $baz); + + return new Something($foo, $baz); + } + + private function extract($foo, $baz) + { $foo = strtolower($foo); $baz[] = $foo; - return new Something($foo, $baz); + return array($foo, $baz); } } CODE ); }