protected function ConverterBase::rewriteFunction in Drupal 7 to 8/9 Module Upgrader 8
Parametrically rewrites a function.
Parameters
\Drupal\drupalmoduleupgrader\RewriterInterface $rewriter: A fully configured parametric rewriter.
\Pharborist\Functions\ParameterNode $parameter: The parameter upon which to base the rewrite.
TargetInterface $target: The target module.
bool $recursive: If TRUE, rewriting will recurse into called functions which are passed the rewritten parameter as an argument.
4 calls to ConverterBase::rewriteFunction()
- EntityHooks::convert in src/
Plugin/ DMU/ Converter/ EntityHooks.php - Performs required conversions.
- HookEntityTypeView::convert in src/
Plugin/ DMU/ Converter/ HookEntityTypeView.php - Performs required conversions.
- HookUserLogin::convert in src/
Plugin/ DMU/ Converter/ HookUserLogin.php - Performs required conversions.
- UserHooks::convert in src/
Plugin/ DMU/ Converter/ UserHooks.php - Performs required conversions.
File
- src/
ConverterBase.php, line 258
Class
- ConverterBase
- Base class for converters.
Namespace
Drupal\drupalmoduleupgraderCode
protected function rewriteFunction(RewriterInterface $rewriter, ParameterNode $parameter, TargetInterface $target, $recursive = TRUE) {
$rewriter
->rewrite($parameter);
$target
->save($parameter);
// Find function calls within the rewritten function which are called
// with the rewritten parameter.
$indexer = $target
->getIndexer('function');
$next = $parameter
->getFunction()
->find(new FunctionCallArgumentFilter($parameter
->getName()))
->filter(function (FunctionCallNode $call) use ($indexer) {
return $indexer
->has($call
->getName()
->getText());
});
/** @var \Pharborist\Functions\FunctionCallNode $call */
foreach ($next as $call) {
/** @var \Pharborist\Functions\FunctionDeclarationNode $function */
$function = $indexer
->get($call
->getName()
->getText());
foreach ($call
->getArguments() as $index => $argument) {
if ($argument instanceof VariableNode && $argument
->getName() == $parameter
->getName()) {
$this
->rewriteFunction($rewriter, $function
->getParameterAtIndex($index), $target, $recursive);
break;
}
}
}
}