我最近看到了一个有趣的代码库,其中一些参数通过注释传递给方法。它看起来像
/*
* @attribute default-method
*/
这当然会为正在实例化的类声明默认方法。
这是什么?它是如何完成的?在任何地方都有这样的例子吗?
它被用来控制返回的格式等,所以它看起来确实很有趣,并且肯定会从我创建的类中删除很多废话。
我最近看到了一个有趣的代码库,其中一些参数通过注释传递给方法。它看起来像
/*
* @attribute default-method
*/
这当然会为正在实例化的类声明默认方法。
这是什么?它是如何完成的?在任何地方都有这样的例子吗?
它被用来控制返回的格式等,所以它看起来确实很有趣,并且肯定会从我创建的类中删除很多废话。
参数没有通过注释传递给方法;评论正在使用(很可能)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 被用来记录代码。
正如其他人所说,它可用于生成文档。
但是,您当然可以使用这种风格的注释来实现应用程序逻辑(通常称为属性或注释)。考虑以下示例:
<?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大量使用了这种“模式”。
注释只是对 javadoc 的改编。基本上,第三方软件可以轻松地解析这些类,并能够直接从评论中找出评论和方法签名,并生成漂亮的 html 或 pdf 文档。正如之前的海报所提到的,请查看 phpdoc,这是使用评论的第三方软件之一。