Angeben von Schlüsseln in Array-Form in PHPstan
Posted: 19 Jan 2025, 17:49
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:
Das ist offensichtlich nicht der richtige Weg, denn PHPstan beschwert sich (auf Ebene 10 mit „PHPDoc-Typen als sicher behandeln“):
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?
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']);
Code: Select all
PHPDoc tag @return contains unresolvable type.
Wie mache ich das richtig? Funktion mit Anmerkungen versehen?