for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/*
* This file is part of the Prophecy.
* (c) Konstantin Kudryashov <[email protected]>
* Marcello Duarte <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Prophecy\Doubler\ClassPatch;
use Prophecy\Doubler\Generator\Node\ClassNode;
/**
* Remove method functionality from the double which will clash with php keywords.
* @author Milan Magudia <[email protected]>
class KeywordPatch implements ClassPatchInterface
{
* Support any class
* @param ClassNode $node
* @return boolean
public function supports(ClassNode $node)
return true;
}
* Remove methods that clash with php keywords
public function apply(ClassNode $node)
$methodNames = array_keys($node->getMethods());
$methodsToRemove = array_intersect($methodNames, $this->getKeywords());
foreach ($methodsToRemove as $methodName) {
$node->removeMethod($methodName);
* Returns patch priority, which determines when patch will be applied.
* @return int Priority number (higher - earlier)
public function getPriority()
return 49;
* Returns array of php keywords.
* @return array
private function getKeywords()
return ['__halt_compiler'];