Mercurial > hg > isophonics-drupal-site
annotate vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php @ 9:1fc0ff908d1f
Add another data file
author | Chris Cannam |
---|---|
date | Mon, 05 Feb 2018 12:34:32 +0000 |
parents | 4c8ae668cc8c |
children | 7a779792577d |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 /* |
Chris@0 | 4 * This file is part of the Prophecy. |
Chris@0 | 5 * (c) Konstantin Kudryashov <ever.zet@gmail.com> |
Chris@0 | 6 * Marcello Duarte <marcello.duarte@gmail.com> |
Chris@0 | 7 * |
Chris@0 | 8 * For the full copyright and license information, please view the LICENSE |
Chris@0 | 9 * file that was distributed with this source code. |
Chris@0 | 10 */ |
Chris@0 | 11 |
Chris@0 | 12 namespace Prophecy\Doubler\ClassPatch; |
Chris@0 | 13 |
Chris@0 | 14 use Prophecy\Doubler\Generator\Node\ClassNode; |
Chris@0 | 15 |
Chris@0 | 16 /** |
Chris@0 | 17 * Remove method functionality from the double which will clash with php keywords. |
Chris@0 | 18 * |
Chris@0 | 19 * @author Milan Magudia <milan@magudia.com> |
Chris@0 | 20 */ |
Chris@0 | 21 class KeywordPatch implements ClassPatchInterface |
Chris@0 | 22 { |
Chris@0 | 23 /** |
Chris@0 | 24 * Support any class |
Chris@0 | 25 * |
Chris@0 | 26 * @param ClassNode $node |
Chris@0 | 27 * |
Chris@0 | 28 * @return boolean |
Chris@0 | 29 */ |
Chris@0 | 30 public function supports(ClassNode $node) |
Chris@0 | 31 { |
Chris@0 | 32 return true; |
Chris@0 | 33 } |
Chris@0 | 34 |
Chris@0 | 35 /** |
Chris@0 | 36 * Remove methods that clash with php keywords |
Chris@0 | 37 * |
Chris@0 | 38 * @param ClassNode $node |
Chris@0 | 39 */ |
Chris@0 | 40 public function apply(ClassNode $node) |
Chris@0 | 41 { |
Chris@0 | 42 $methodNames = array_keys($node->getMethods()); |
Chris@0 | 43 $methodsToRemove = array_intersect($methodNames, $this->getKeywords()); |
Chris@0 | 44 foreach ($methodsToRemove as $methodName) { |
Chris@0 | 45 $node->removeMethod($methodName); |
Chris@0 | 46 } |
Chris@0 | 47 } |
Chris@0 | 48 |
Chris@0 | 49 /** |
Chris@0 | 50 * Returns patch priority, which determines when patch will be applied. |
Chris@0 | 51 * |
Chris@0 | 52 * @return int Priority number (higher - earlier) |
Chris@0 | 53 */ |
Chris@0 | 54 public function getPriority() { |
Chris@0 | 55 return 49; |
Chris@0 | 56 } |
Chris@0 | 57 |
Chris@0 | 58 /** |
Chris@0 | 59 * Returns array of php keywords. |
Chris@0 | 60 * |
Chris@0 | 61 * @return array |
Chris@0 | 62 */ |
Chris@0 | 63 private function getKeywords() { |
Chris@0 | 64 |
Chris@0 | 65 return array( |
Chris@0 | 66 '__halt_compiler', |
Chris@0 | 67 'abstract', |
Chris@0 | 68 'and', |
Chris@0 | 69 'array', |
Chris@0 | 70 'as', |
Chris@0 | 71 'break', |
Chris@0 | 72 'callable', |
Chris@0 | 73 'case', |
Chris@0 | 74 'catch', |
Chris@0 | 75 'class', |
Chris@0 | 76 'clone', |
Chris@0 | 77 'const', |
Chris@0 | 78 'continue', |
Chris@0 | 79 'declare', |
Chris@0 | 80 'default', |
Chris@0 | 81 'die', |
Chris@0 | 82 'do', |
Chris@0 | 83 'echo', |
Chris@0 | 84 'else', |
Chris@0 | 85 'elseif', |
Chris@0 | 86 'empty', |
Chris@0 | 87 'enddeclare', |
Chris@0 | 88 'endfor', |
Chris@0 | 89 'endforeach', |
Chris@0 | 90 'endif', |
Chris@0 | 91 'endswitch', |
Chris@0 | 92 'endwhile', |
Chris@0 | 93 'eval', |
Chris@0 | 94 'exit', |
Chris@0 | 95 'extends', |
Chris@0 | 96 'final', |
Chris@0 | 97 'finally', |
Chris@0 | 98 'for', |
Chris@0 | 99 'foreach', |
Chris@0 | 100 'function', |
Chris@0 | 101 'global', |
Chris@0 | 102 'goto', |
Chris@0 | 103 'if', |
Chris@0 | 104 'implements', |
Chris@0 | 105 'include', |
Chris@0 | 106 'include_once', |
Chris@0 | 107 'instanceof', |
Chris@0 | 108 'insteadof', |
Chris@0 | 109 'interface', |
Chris@0 | 110 'isset', |
Chris@0 | 111 'list', |
Chris@0 | 112 'namespace', |
Chris@0 | 113 'new', |
Chris@0 | 114 'or', |
Chris@0 | 115 'print', |
Chris@0 | 116 'private', |
Chris@0 | 117 'protected', |
Chris@0 | 118 'public', |
Chris@0 | 119 'require', |
Chris@0 | 120 'require_once', |
Chris@0 | 121 'return', |
Chris@0 | 122 'static', |
Chris@0 | 123 'switch', |
Chris@0 | 124 'throw', |
Chris@0 | 125 'trait', |
Chris@0 | 126 'try', |
Chris@0 | 127 'unset', |
Chris@0 | 128 'use', |
Chris@0 | 129 'var', |
Chris@0 | 130 'while', |
Chris@0 | 131 'xor', |
Chris@0 | 132 'yield', |
Chris@0 | 133 ); |
Chris@0 | 134 } |
Chris@0 | 135 } |