Typehint объекты внутри объекта (stdClass)

1

У меня есть экземпляр stdClass. Каждое из его свойств будет экземпляром другого класса, как мне набрать это?

Для справки, если бы это был массив, который я мог бы использовать

/**
 * @var Other\Class[]
 */
protected $holder;

Затем я получаю шрифты для $mainobj->holder['elem']. Как это сделать с объектом?

Я пытался:

/**
 * @var Other\Class{}
 */

Не повезло.

Теги:
oop

2 ответа

1
Лучший ответ

Вы не можете, и я думаю, что маловероятно, что какая-либо IDE будет реализовывать способ сделать это, потому что объект с неизвестными свойствами, все одного типа, не очень похож на OOP.

Ну, это действительно список ключевых значений, но я предпочитаю использовать stdClass, а не массив - он красивее, и мне не нужно использовать одинарные кавычки для доступа к элементу, что в основном связано с тем, что я делаю это так. Мне просто нужно выяснить, как набрать это.

Это означает, что вам нужно будет выбирать между несколькими символами или с типом подсказок. Ассоциативный массив является идеальной структурой для ключевых значений карт в PHP.

  • 0
    Да, мне это тоже не кажется правильным, но гораздо удобнее использовать обозначение объекта, когда я щелкаю на свойстве, оно выделяет все остальные использования, очень жаль, что мне придется пропустить это: c
0

В PhpStorm я использую:

/** @var Other\Class $variableName */

С помощью свойств класса я оставляю $variableName.

  • 0
    Это намекает на то, что свойство имеет тип Other\Class , нет? Мне нужно намекнуть, что свойства этого свойства имеют тип Other\Class .
  • 0
    Собственность собственности? Не могу этого сделать, AFAIK. Но я бы предложил, чтобы ваше свойство было не stdClass, а определенным классом, а затем напечатайте там подсказку.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню