phpstan / phpstan-strict-rules

Extra strict and opinionated rules for PHPStan
MIT License
595 stars 46 forks source link

String literal matching specific regex annotation #154

Open janbarasek opened 2 years ago

janbarasek commented 2 years ago

Hello,

Often I want to prepare a package for my colleagues that defines very strict rules about the expectation of what input strings a method argument or property can handle.

If I implement the format validation as an assert, we will only learn about the error at runtime and it may never occur. If there is a native way to define the expected string format, it will be possible to automatically check huge code structures at compiletime.

For example (possible value can be v1.2.3):

function getFirstVersionPart(string $version): int
{
   preg_match('/^v(\d+)/', $version, $parser);

   return (int) $parser[1];
}

This annotation would help PhpStan recognize how to evaluate a regular expression and that all indexes will exist (and I don't need to handle the occurrence of the 1 index).

Thanks.

ondrejmirtes commented 2 years ago

Hi, unless you find a similar feature in a different language like TypeScript or Hacklang, I'm not really interested 😊

Personally I'd pass around objects instead of strings.