Angeben von Schlüsseln in Array-Form in PHPstan

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Angeben von Schlüsseln in Array-Form in PHPstan

by Guest » 20 Jan 2025, 18:28

Ich möchte eine Funktion mit Anmerkungen versehen, die ein Array mit mindestens dem Schlüssel „a“ annimmt und die gleiche Array-Form mit dem neu hinzugefügten Schlüssel „x“ zurückgibt. Ich habe versucht, die Typkreuzung wie folgt zu verwenden:

Code: Select all

/**
* @template T of array{a: string}
* @param T $p
* @return T&array{x: int}
*/
function addXToArray(array $p) {
$p['x'] = strlen($p['a']);
return $p;
}

$result = addXToArray(['a' => 'hello']);
Das ist offensichtlich nicht der richtige Weg, denn PHPstan beschwert sich (auf Ebene 10 mit „PHPDoc-Typen als sicher behandeln“):

Code: Select all

PHPDoc tag @return contains unresolvable type.
Ich verwende Vorlage T, weil ich alle anderen Schlüssel beibehalten muss, die möglicherweise im Argument vorhanden sind.
Wie mache ich das richtig? Funktion mit Anmerkungen versehen?

Top