最近我看到了一個有趣的代碼庫,其中一些參數通過註釋傳遞給了方法。 它看起來有點像Php用於傳遞參數的註釋
/*
* @attribute default-method
*/
這當然會,聲明的默認方法一類被實例化。
這是什麼?它是如何完成的?有沒有這樣的例子嗎?
它被用來控制返回等格式,所以它肯定看起來很有趣,並且肯定會從我創建的類中刪除大量垃圾。
最近我看到了一個有趣的代碼庫,其中一些參數通過註釋傳遞給了方法。 它看起來有點像Php用於傳遞參數的註釋
/*
* @attribute default-method
*/
這當然會,聲明的默認方法一類被實例化。
這是什麼?它是如何完成的?有沒有這樣的例子嗎?
它被用來控制返回等格式,所以它肯定看起來很有趣,並且肯定會從我創建的類中刪除大量垃圾。
正如其他人所指出的,它可以用來生成文檔。
但是,你當然可以使用這種風格的註釋來實現應用程序邏輯(通常被認爲是屬性或註釋)。考慮下面的例子:
<?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嚴重使用這種「模式」。
參數未通過註釋傳遞給方法;這些評論正在利用(最有可能的)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被用來記錄代碼。
我經常使用netbeans進行開發。甚至在鍵入'/ **'後,它會自動將它繼續的方法的參數添加到註釋中。 – Bradmage 2012-04-04 11:13:53
評論只是對javadoc的改編。基本上,第三方軟件可以通過類輕鬆解析,並能夠從評論中直接發表評論和方法簽名,並生成一個漂亮的html或pdf文檔。正如前面的海報提到的,看看phpdoc,這是使用評論的第三方軟件之一。
據我所知,它什麼都不做。當你刪除該行代碼實際上停止工作嗎? – Tom 2012-04-04 11:09:04
這僅用於文檔目的。 – ComFreek 2012-04-04 11:09:48