Как задокументировать метод, который изменяет защищенный атрибут с помощью phpdoc?

Как лучше всего задокументировать метод, который изменяет защищенный атрибут с помощью phpdoc?

Например, как правильно документировать приведенный ниже метод setVar()?

class Test {
  protected $variables = array();

  public function setVar($name, $value) {
    $this->$variables[$name] = $value;
  }
}

Заранее спасибо,

.L.


person Leo Burd    schedule 30.08.2010    source источник


Ответы (2)


Я полагаю, это зависит от того, почему вы хотите подчеркнуть, что метод влияет на этот защищенный атрибут...

Если вы просто хотите «сказать» это, просто укажите это в описании, с использованием или без использования встроенного тега @link:

/**
 * Setter for $variables or {@link Test::$variables}
 * ...

При использовании встроенной ссылки @ в описании метода создается гиперссылка на документацию $variables.

Вы можете использовать тег @see как отдельную ссылку на атрибут:

/**
 * Setter
 * @see Test::$variables 
 * ...

Это также создает гиперссылку на документ атрибута, но более заметен благодаря собственному тегу.

Если вы хотите создать «указатель» из метода на атрибут, используйте тег @uses:

/**
 * Setter
 * @uses Test::$variables
 * ...

Тег @uses в методе здесь автоматически поместит тег @usedby в документацию для свойства $variables... результатом будет гиперссылка из метода на атрибут в документе метода, а также гиперссылка из атрибута к методу в документе атрибута. Думайте об этом как об аналоге «секретных проходов» в настольной игре Clue, которые соединяют угловые комнаты с противоположными угловыми комнатами.

Еще одно намерение, которое может быть выполнено с помощью тега @uses, заключается в том, что документация для $variables покажет список тегов @usedby, которые показывают все методы, влияющие на атрибут... при условии, конечно, что вы добросовестно поставили @ использует теги в этих методах.

person ashnazg    schedule 02.09.2010
comment
Наиболее распространенная причина — отсутствие необходимости перепечатывать описание переменной. - person Geoffrey; 25.01.2017

Я обычно использую что-то вроде следующего, хотя, вероятно, есть лучший способ.

class Test {
  protected $variables = array();

 //**
   * Setter for $this->variables
   *
   * @var string
   * @var string
   * @returns void
   */
  public function setVar($name, $value) {
    $this->$variables[$name] = $value;
  }
}
person Ryan Gooler    schedule 30.08.2010