Переопределение аргумента PHPDOCS о методе в родительском классеPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Переопределение аргумента PHPDOCS о методе в родительском классе

Сообщение Anonymous »

Мой вопрос, чтобы получить завершение кода, работая в наборе классов, которые у меня есть. < /p>

Код: Выделить всё

+ abstract Model :: make(array{...})
+- SubModel
+- AnotherSubModel
+- ...
< /code>
У меня есть абстрактный класс модели и несколько классов ребенка, расширяющие его. Класс модели имеет функцию создания, которая принимает множество свойств и возвращает новый статический экземпляр любого ребенка, который он призван. Он использует отражение, чтобы назначить каждое свойство из массива к правильному свойству в классе дочерних.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>
Я пытаюсь выяснить, как получить завершение работы в Phpstorm, чтобы пройти только действительные клавиши массива. Каждая подмодель имеет отчетливый список свойств, которые могут быть установлены. В идеале я хотел бы иметь возможность объявить форму массива свойств в детском классе и попросить IDE предупредить меня, если в массиве неверное свойство отсутствует, и просто общая поддержка завершения, чтобы узнать, какие свойства допускаются. < /p>
Документы Phpstan для массивов, например, Array {'foo': int, "bar": string} 
кажется идеальным способом описания формы, которую нуждается в массиве моего ввода, чтобы соответствовать соответствующему классу модели. Тем не менее, я не могу понять, как/где объявить форму массива в моем подклассном классе без повторного внедрения метода создания в каждом субпословном классе.

Подробнее здесь: https://stackoverflow.com/questions/794 ... rent-class
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»