Что значит @param в классе? - PullRequest
19 голосов
/ 24 января 2012

Что означает @param при создании класса? Насколько я понимаю, он используется, чтобы сообщить сценарию, какой тип данных представляют собой переменные и какое значение возвращает функция, верно? Например:

/**
 * @param string $some
 * @param array $some2
 * @return void
 */

Нет ли другого способа сделать это, я думаю о таких вещах, как: void function() { ... } или о чем-то подобном. А для переменных может быть (int) $ test;

Ответы [ 5 ]

23 голосов
/ 24 января 2012

@param не имеет особого значения в PHP, обычно используется в комментариях для написания документации. Приведенный вами пример показывает именно это.

Если вы используете инструмент документирования, он будет искать код для @param, @summary и другие аналогичные значения (в зависимости от сложности инструмента) для автоматического создания хорошо отформатированной документации для кода.

3 голосов
/ 24 января 2012

Как уже упоминали другие, @param, на который вы ссылаетесь, является частью комментария и не имеет синтаксического значения. Это просто, чтобы предоставить подсказки генератору документации. Вы можете найти больше информации о поддерживаемых директивах и синтаксисе, посмотрев проект PHPDoc .

Обращаясь ко второй части вашего вопроса ... Насколько я знаю, нет способа указать тип возвращаемого значения в PHP. Вы также не можете заставить параметры иметь определенный тип примитива (строка, целое число и т. Д.).

Однако вы можете требовать, чтобы параметры были либо массивом, либо объектом, либо объектом определенного типа, начиная с PHP 5.1 или около того.

function importArray(array $myArray)
{
}

PHP выдаст ошибку, если вы попытаетесь вызвать этот метод с чем угодно, кроме массива.

class MyClass
{
}

function doStuff(MyClass $o)
{
}

Если вы попытаетесь вызвать doStuff с объектом любого типа, кроме MyClass, PHP снова выдаст ошибку.

2 голосов
/ 15 июля 2016

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

// this function accepts and returns an int
 function age(int $age): int{

  return 18;
}
1 голос
/ 24 января 2012

PHP совершенно не замечает комментариев.Он используется для описания параметров, которые метод использует только для того, чтобы сделать код более читабельным и понятным.

Кроме того, хорошая практика кода посвящена использованию определенных имен (таких как @param) для генераторов документации.

Некоторые IDE будут включать @param и другую информацию во всплывающей подсказке при использовании наведения на соответствующий метод.

0 голосов
/ 24 января 2012

@ param является частью комментария описания, который говорит вам, что тип входного параметра. Это не имеет ничего общего с синтаксисом кода. Используйте редактор с поддержкой цвета, такой как Notepad ++, чтобы легко видеть, что код и какие комментарии.

...