2012-04-04 55 views
0

最近我看到了一個有趣的代碼庫,其中一些參數通過註釋傳遞給了方法。 它看起來有點像Php用於傳遞參數的註釋

/* 
* @attribute default-method 
*/ 

這當然會,聲明的默認方法一類被實例化。

這是什麼?它是如何完成的?有沒有這樣的例子嗎?

它被用來控制返回等格式,所以它肯定看起來很有趣,並且肯定會從我創建的類中刪除大量垃圾。

+0

據我所知,它什麼都不做。當你刪除該行代碼實際上停止工作嗎? – Tom 2012-04-04 11:09:04

+0

這僅用於文檔目的。 – ComFreek 2012-04-04 11:09:48

回答

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文檔(並且使開發人員在查看源文件時能夠輕鬆查看發生了什麼)。

這是諸如此類的事情,你在談論?:

/** 
* 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 2012-04-04 11:13:53

0

評論只是對javadoc的改編。基本上,第三方軟件可以通過類輕鬆解析,並能夠從評論中直接發表評論和方法簽名,並生成一個漂亮的html或pdf文檔。正如前面的海報提到的,看看phpdoc,這是使用評論的第三方軟件之一。