如何在notepad++上使用正则表达式替换fn()的所有php匿名函数?



我正在尝试为php 7.4更新遗留php代码(7.0)>=我想使用新的fn() =>语法,而不是function() use () {}

不幸的是,我有数百个匿名函数使用CakePHP ORM,如:

$query->matching('Tags', function ($q) {
return $q->where(['Tags.name' => 'CakePHP']);
});

使用php 7.4>=可以:

$query->matching('Tags', fn($q) =>
$q->where(['Tags.name' => 'CakePHP'])
);

有时使用"use":

$query = $articles->find()->matching('Comments.Users', function ($q) use ($username) {
return $q->where(['username' => $username]);
});

php 7.4>=(不需要使用):

$query = $articles->find()->matching('Comments.Users', fn ($q) =>
$q->where(['username' => $username])
);

或使用两个或多个参数:

$query->where(function (QueryExpression $exp, Query $q) {
return $exp->eq('published', true);
});

但是当你有多条指令时,fn ()不能使用,例如:

$results->map(function ($row) {
$row['age'] = $row['birth_date']->diff(new DateTime)->y;
return $row;
});

我想使用notepad++ regex并替换所有文件中的功能执行一个正则表达式并替换所有"可能的"。functions()forfn().

那么,什么REGEX可以实现这个目标呢?

Find: functions*(([^()]*))[^{]*{s*returns*([^;]*)s*;s*}
Replace: fn(1) => 2

最新更新