首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于传递参数的Php注释

用于传递参数的Php注释
EN

Stack Overflow用户
提问于 2012-04-04 19:05:51
回答 4查看 269关注 0票数 0

我最近看到了一个有趣的代码库,其中一些参数通过注释传递给方法。它看起来像这样

代码语言:javascript
复制
/*
 * @attribute default-method
 */

当然,这将声明被实例化的类的默认方法。

这是什么?它是如何做到的?有这样的例子吗?

它被用来控制返回的格式,等等,所以它看起来非常有趣,而且肯定会从我创建的类中删除很多垃圾。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-04 19:15:51

正如其他人所说,它可以用来生成文档。

然而,您当然可以使用这种风格的注释来实现应用程序逻辑(通常称为属性或注释)。考虑以下示例:

代码语言:javascript
复制
<?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大量使用这种“模式”。

票数 1
EN

Stack Overflow用户

发布于 2012-04-04 19:09:05

参数不是通过注释传递给方法的;注释使用(最有可能的) PHPDoc来允许生成API文档(并使开发人员在查看源代码时更容易看到正在发生的事情)。

这是你说的那种事情吗?:

代码语言:javascript
复制
/**
 * 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被用来记录代码。

票数 6
EN

Stack Overflow用户

发布于 2012-04-04 19:09:51

实际上是两个星号

代码语言:javascript
复制
/**
 * @attribute blah
 */

请参阅PHP Documentor

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10009850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档