Übergeordnetes PHPDOCS -Argument einer Methode in einer übergeordneten Klasse
Posted: 21 Feb 2025, 21:48
Meine Frage, um die Code -Fertigstellung in einer Reihe von Klassen zu bearbeiten, die ich habe. < /p>
scheint eine ideale Möglichkeit, die Form zu beschreiben, die mein Eingangsarray für die zugehörige Modellklasse übereinstimmt. Ich kann jedoch nicht herausfinden, wie/wo die Array-Form in meiner Unterklasse deklariert werden soll, ohne die Methode in jeder Subklasse erneut zu implementieren.
Code: Select all
+ abstract Model :: make(array{...})
+- SubModel
+- AnotherSubModel
+- ...
< /code>
Ich habe eine abstrakte Modellklasse und mehrere untergeordnete Klassen, die sie erweitern. Die Modellklasse verfügt über eine Make -Funktion, die eine Reihe von Eigenschaften akzeptiert und eine neue statische Instanz der Kinderklasse zurückgibt, die sie aufgerufen wird. Es verwendet Reflexion, um jede Eigenschaft aus dem Array der richtigen Eigenschaft in der untergeordneten Klasse zuzuweisen. < /P>
Beispielcode: < /p>
abstract class Model {
public static function make(array $props): static
{
// ... magic
}
}
class SubModel extends Model {
protected ?string $subModelProp = null;
}
$instance = SubModel::make(['subModelProp' => 'Hello, World']);
// I'd like code completion in the IDE to tell me notAProp isn't valid:
$instanceTwo = SubModel::make(['notAProp' => 'Whoops']);
< /code>
Ich versuche herauszufinden, wie ich die Fertigstellung in PHPSTORM erstellt, damit nur gültige Array -Tasten übergeben werden. Jedes Submodell verfügt über eine bestimmte Liste von Eigenschaften, die festgelegt werden können. Idealerweise würde ich in der Lage sein, die Form des Eigenschaftenarrays in der Kinderklasse zu erklären und die IDE aufmerksam zu machen, wenn sich eine ungültige Eigenschaft im Array befindet, eine Eigenschaft fehlt und nur allgemeine Unterstützung, um zu wissen, welche Eigenschaften sind erlaubt. < /p>
Die Phpstan -Dokumente für Array -Formen, z. Array {'foo': int, "baly": string}