coding-standard
coding-standard copied to clipboard
`SlevomatCodingStandard.Functions.StaticClosure`: provide setting to toggle for arrow functions or traditional closures
SlevomatCodingStandard.Functions.StaticClosure does not provide a setting to
toggle this sniff for only arrow functions or traditional function closure
syntax.
While declaring traditional closures static might be a best practice, the PHP
RFC introducing the arrow function implementation implies that declaring
static arrow functions is a micro-optimization in the majority of cases:
For normal closures, [
$thisbinding] can be prevented by prefixing them withstatic. For the sake of completeness this is also supported for arrow functions...
and:
Static closures are rarely used: They're mainly used to prevent
$thiscycles, which make GC behavior less predictable. Most code need not concern itself with this.
https://wiki.php.net/rfc/arrow_functions_v2#this_binding_and_static_arrow_functions
Personally, I would prefer to avoid the addition of static for arrow functions,
as it seems they are, by design, intended to provide a concise syntax without
static. Since I don't particularly care about static for traditional closures,
I am fine with just removing this sniff from my configuration.
I'm open to accept PR with new option in this sniff :)