Как объяснить атрибуты PHPDoc для `@property-read` и `@property-write`?

#php #phpdoc

#php #phpdoc

Вопрос:

Учитывая руководство по PHPDoc, я не могу найти объяснения по этому поводу

  • @property-read
  • @property-write

но только для @property .

Что они делают?

Комментарии:

1. Смотрите: docs.phpdoc.org/3.0/guide/references/phpdoc/tags/…

Ответ №1:

Вот хорошее объяснение магических свойств.

По сути, @property-write интерпретируется — как следует из названия — как свойство, доступное только для записи. Завершение кода в Eclipse, например, использует это. Если ваше волшебное свойство foo объявлено «только для записи», оно не будет отображаться при завершении кода при вводе $a = $this->f .

Комментарии:

1. да, я уже прочитал эту страницу, но мне все еще не ясно, что такое @property-read и @property-write

Ответ №2:

Тег @property — это то, что задокументировано в руководстве phpDocumentor. Этот тег используется только в классе docblock для документирования «волшебного» свойства / переменной, то есть того, которое не определено в коде, и поэтому не может быть «docblock’d».

Теперь, когда вы хотите подчеркнуть, что конкретная «волшебная переменная» доступна только для чтения (недоступна для записи), вам следует использовать @property-read . Если у вас есть «волшебная переменная», доступная только для записи (не читаемая), вы бы использовали @property-write . Конечно, мне трудно представить переменные, доступные только для записи, которые нельзя прочитать, но поскольку это технически возможно, @property-write доступен для документирования.

Эти два «подтега» @property объясняются ниже на странице @property, на которую вы ссылались выше.

Ответ №3:

@property-read сообщает IDE (и генератору документов), что существует волшебное поле, предназначенное только для Get.

@property-write сообщает IDE, что существует поле, предназначенное только для волшебных Set.

В PHP 8.1 добавлено readonly ключевое слово, которое в принципе запрещает присваивать переменной другое значение (кроме начального значения).