#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
ключевое слово, которое в принципе запрещает присваивать переменной другое значение (кроме начального значения).