coding-standard icon indicating copy to clipboard operation
coding-standard copied to clipboard

`SlevomatCodingStandard.Functions.StaticClosure`: provide setting to toggle for arrow functions or traditional closures

Open astratagem opened this issue 1 year ago • 1 comments

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, [$this binding] can be prevented by prefixing them with static. For the sake of completeness this is also supported for arrow functions...

and:

Static closures are rarely used: They're mainly used to prevent $this cycles, 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.

astratagem avatar Nov 13 '24 16:11 astratagem

I'm open to accept PR with new option in this sniff :)

kukulich avatar Feb 01 '25 12:02 kukulich