Skip to content

String literal matching specific regex annotation #154

@janbarasek

Description

@janbarasek

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions