В phpDoc, как мне написать класс, который еще не знаю, будет возвращен? - PullRequest
1 голос
/ 22 января 2011

Ниже приведен код для Base.php и класса Base

/**
 * @return ?
 */
public static function withId($id, $class = __CLASS__)
{
    $instance = new $class($id);
    if ($instance->getId() == self::ID_OF_UNKNOWN_USER) {
        $instance = null;
    }
    return $instance;
}

Другие классы расширят этот класс. Я использую позднюю статическую привязку, чтобы выяснить, кто должен быть создан до вызова withId () и передачи имени класса как $ class.

Возвращаемый класс может быть Base или любым из его дочерних классов. Как мне пометить это в phpDoc?

Ответы [ 2 ]

1 голос
/ 22 января 2011

Это похоже на фабричный шаблон, и в этом случае пользовательский код не должен знать возвращаемый конкретный класс. Обычно вы используете абстрактный класс или интерфейс и программу для этого. В этом случае:

/**
 * @return null|Base
 */

Нет способа использовать значения, сгенерированные во время выполнения в строках документации (которые являются статическими). ​​

0 голосов
/ 22 января 2011

Возвращаемый класс может быть Base или любым из его дочерних классов.Как мне пометить это в phpDoc?

Прямо вперед.

/**
 * @return Base
 */
...