我正在尝试为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