Mercurial > hg > isophonics-drupal-site
annotate vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 7a779792577d |
children |
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@12 | 54 public function getPriority() |
Chris@12 | 55 { |
Chris@0 | 56 return 49; |
Chris@0 | 57 } |
Chris@0 | 58 |
Chris@0 | 59 /** |
Chris@0 | 60 * Returns array of php keywords. |
Chris@0 | 61 * |
Chris@0 | 62 * @return array |
Chris@0 | 63 */ |
Chris@12 | 64 private function getKeywords() |
Chris@12 | 65 { |
Chris@12 | 66 if (\PHP_VERSION_ID >= 70000) { |
Chris@12 | 67 return array('__halt_compiler'); |
Chris@12 | 68 } |
Chris@0 | 69 |
Chris@0 | 70 return array( |
Chris@0 | 71 '__halt_compiler', |
Chris@0 | 72 'abstract', |
Chris@0 | 73 'and', |
Chris@0 | 74 'array', |
Chris@0 | 75 'as', |
Chris@0 | 76 'break', |
Chris@0 | 77 'callable', |
Chris@0 | 78 'case', |
Chris@0 | 79 'catch', |
Chris@0 | 80 'class', |
Chris@0 | 81 'clone', |
Chris@0 | 82 'const', |
Chris@0 | 83 'continue', |
Chris@0 | 84 'declare', |
Chris@0 | 85 'default', |
Chris@0 | 86 'die', |
Chris@0 | 87 'do', |
Chris@0 | 88 'echo', |
Chris@0 | 89 'else', |
Chris@0 | 90 'elseif', |
Chris@0 | 91 'empty', |
Chris@0 | 92 'enddeclare', |
Chris@0 | 93 'endfor', |
Chris@0 | 94 'endforeach', |
Chris@0 | 95 'endif', |
Chris@0 | 96 'endswitch', |
Chris@0 | 97 'endwhile', |
Chris@0 | 98 'eval', |
Chris@0 | 99 'exit', |
Chris@0 | 100 'extends', |
Chris@0 | 101 'final', |
Chris@0 | 102 'finally', |
Chris@0 | 103 'for', |
Chris@0 | 104 'foreach', |
Chris@0 | 105 'function', |
Chris@0 | 106 'global', |
Chris@0 | 107 'goto', |
Chris@0 | 108 'if', |
Chris@0 | 109 'implements', |
Chris@0 | 110 'include', |
Chris@0 | 111 'include_once', |
Chris@0 | 112 'instanceof', |
Chris@0 | 113 'insteadof', |
Chris@0 | 114 'interface', |
Chris@0 | 115 'isset', |
Chris@0 | 116 'list', |
Chris@0 | 117 'namespace', |
Chris@0 | 118 'new', |
Chris@0 | 119 'or', |
Chris@0 | 120 'print', |
Chris@0 | 121 'private', |
Chris@0 | 122 'protected', |
Chris@0 | 123 'public', |
Chris@0 | 124 'require', |
Chris@0 | 125 'require_once', |
Chris@0 | 126 'return', |
Chris@0 | 127 'static', |
Chris@0 | 128 'switch', |
Chris@0 | 129 'throw', |
Chris@0 | 130 'trait', |
Chris@0 | 131 'try', |
Chris@0 | 132 'unset', |
Chris@0 | 133 'use', |
Chris@0 | 134 'var', |
Chris@0 | 135 'while', |
Chris@0 | 136 'xor', |
Chris@0 | 137 'yield', |
Chris@0 | 138 ); |
Chris@0 | 139 } |
Chris@0 | 140 } |