Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Not full port/support for preg_match matched values #52

Closed
Labels
enhancementNew feature or request
@bnowak

Description

First of all, @shish thanks for you amazing work and adding phpstan's port for special-case support for preg_match. That's brilliant.

However, I've found a small inconvenience in using that vs. how it's handled by native preg_match. Example:

use function Safe\preg_match;
class a {
 public function test(): void
 {
 $safeResult = preg_match('/^id-(?P<id>\d+)^/', 'id-123', $safeMatch);
 assert(1 === $safeResult);
 \PHPStan\dumpType($safeResult); // Dumped type: 1
 \PHPStan\dumpType($safeMatch); // Dumped type: array{0?: string, id?: numeric-string, 1?: numeric-string}
 $nativeResult = \preg_match('/^id-(?P<id>\d+)^/', 'id-123', $nativeMatch);
 assert(1 === $nativeResult);
 \PHPStan\dumpType($nativeResult); // Dumped type: 1
 \PHPStan\dumpType($nativeMatch); // Dumped type: array{0: string, id: numeric-string, 1: numeric-string}
 }
}

As you can see phpstan with using native preg_match (after asserting its result that is 1 which mean match was found) is recognizing matched values are required/existing for sure in $match argument (array contains id key for sure).
With using safe version of the function it recognize the same match output, however its keys are optional (array may contain id id?).

Maybe it's not so crucial, however this missing part prevents me from using safe version for now - that would require additional assertions that $match variable contains expected keys for sure (what is not an intention why I chose safe library 😉).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /