2012-04-04 2 views
0

Я недавно увидел интересную базу кода, где некоторые аргументы передавались методам через комментарии. Это выглядело как-тоPhp Комментарии, используемые для передачи аргументов

/* 
* @attribute default-method 
*/ 

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

Что это? Как это делается? Есть ли пример этого где угодно?

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

+0

Насколько я знаю, он ничего не делает. Действительно ли код перестает работать, когда вы удаляете эту строку? – Tom

+0

Это только для целей документации. – ComFreek

ответ

1

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

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

<?php 
/** 
* @Foo Bar 
*/ 
function sum($a, $b) { 
    return $a + $b; 
} 

$function = new ReflectionFunction('sum'); 
$attributes = $function->getDocComment(); 

var_dump($attributes); 
// string(29) "/** * @attribute Foo Bar */" 

Вы можете разобрать этот комментарий и делать все, что хотите, с информацией.

Фактически, Doctrine использует этот «узор» в большой степени.

6

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

Это та вещь, вы говорите ?:

/** 
* Set the data 
* 
* @access public 
* @param string $field 
* @param mixed $value 
*/ 
public function __set($field, $value) 
{ 
    $this->_data[$field] = $value; 
} 

/** 
* Get the data 
* 
* @access public 
* @param string $field 
* @return mixed 
*/ 
public function __get($field) 
{ 
    return isset($this->_data[$field]) ? $this->_data[$field] : NULL; 
} 

Если да, то вы заметите, что параметры по-прежнему передаются, и возвращаемые значения возвращаются, как обычно. Это просто, что PHPDoc используется для документирования кода.

+0

Я использую netbeans часто для разработки. И даже после ввода '/ **' будет автоматически добавлять аргументы из метода, который он переводит к комментарию. – Bradmage

0

Комментарии являются лишь адаптацией к javadoc. В основном стороннее программное обеспечение может легко анализировать классы и в состоянии отображать комментарии и сигнатуры методов прямо из комментария и генерировать довольно html или pdf-документацию. Как упоминал предыдущий плакат, посмотрите на phpdoc, это одно из сторонних программ, которые будут использовать комментарии.

Смежные вопросы