繁体   English   中英

Php 评论用于传递 arguments

[英]Php Comments used to pass arguments

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

/*
 * @attribute default-method
 */

这当然会为正在实例化的 class 声明默认方法。

这是什么? 它是如何完成的? 任何地方都有这样的例子吗?

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

arguments 没有通过注释传递给方法; 评论正在使用(很可能) 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 大量使用了这种“模式”。

它实际上是两个星号

/**
 * @attribute blah
 */

参见PHP 记录员

注释只是对 javadoc 的改编。 基本上,第三方软件可以轻松地解析类,并能够直接从评论中提取评论和方法签名,并生成漂亮的 html 或 pdf 文档。 正如之前的发帖人所提到的,看看 phpdoc,这是会使用评论的第三方软件之一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM