标签: phpdoc

PHPDoc用于可变长度的参数数组

是否有一种语法来记录采用单个配置数组的函数,而不是单个参数?

我正在考虑CodeIgniter样式的库,它使用类似于此的机制:

<?php

//
// Library definition
//

class MyLibrary {
  var $foo;
  var $bar;
  var $baz;
  // ... and many more vars...


  /* Following is how CodeIgniter documents their built-in libraries,
   * which is mostly useless.  AFAIK they should be specifying a name
   * and description for their @param (which they don't) and omitting
   * @return for constructors 
   */

  /** 
   * @access public
   * @param array
   * @return void
   */
  function MyLibrary($config = array()) {
    foreach ($config as $key …
Run Code Online (Sandbox Code Playgroud)

php comments codeigniter phpdoc

11
推荐指数
1
解决办法
7007
查看次数

我什么时候应该在PHPDoc类型提示和docblocks中使用NULL?

我很困惑何时在使用nullPHPDoc描述变量时使用as作为类型.类型提示是否应该描述外部呼叫者预期和遵守的希望和期望,或者他们是否应该记录变量的所有可能类型,即使希望它在实践中是一种非常特定的类型?

示例1:默认值.以下函数仅需要非空值.但是,如果没有传递任何值,则默认为null并明确检查该值作为确定是否传递任何内容的方法,并为该情况返回特殊值.希望没有外部调用者将传递除整数之外的任何内容.应该null@param下面的类型中使用,还是应该只指定,int因为如果传递任何东西,我们想要传递的是什么?

/**
 * @param int|null $bar
 */
function foo($bar = null) {
  if(is_null($bar)) { 
    return 'ABC';
  }

  return doSomething($bar);
}
Run Code Online (Sandbox Code Playgroud)

示例2:实例属性.我们只想要$ bar来包含整数.也就是说,如果没有为bar设置任何内容,则此实例属性的默认PHP值为null.我是否需要考虑使用$ bar的每个地方,可能的null类型如下所示?

class Foo {
  /**
   * @var int|null
   */
  public $bar;

  /**
   * @param int|null $bar
   */
  public setBar( $bar) {
    $this->bar = $bar;
  }

  /**
   * @return int|null
   */
  public function getBar() {
    return $this->bar;
  }
}
Run Code Online (Sandbox Code Playgroud)

基本上我发现自己几乎每个人都乱扔垃圾@param@var声明,|null因为从技术上来说它可能就是那个价值.但在实践中它应该.我是否应该期望我的几乎所有类型都包含 …

php phpdoc docblocks

11
推荐指数
2
解决办法
4702
查看次数

PhpDocs:可以在参数描述中链接方法吗?

是否可以链接到另一个方法/类/属性/等.在我的项目里面内嵌@deprecated标签?像这样:

/**
 * Method description
 * @deprecated 1.0 Reason for deprecation, use {@link newMethod()} instead!
 * @param string $str
 * @param string|null $str2
 * @return bool
*/
public function method($str, $str2) {
    // TODO: Code...
}

...
Run Code Online (Sandbox Code Playgroud)

php documentation phpdoc phpdocumentor2

11
推荐指数
1
解决办法
3276
查看次数

Eclipse内外的PHPDoc文档生成器?

我正在使用Eclipse + PDT进行开发.我一直在我的代码中添加phpdoc注释,但实际上从未在Eclipse中生成结果文档.我该怎么做 - Eclipse中是否有一些功能,或者应该在外部完成doc生成?

php eclipse documentation phpdoc

10
推荐指数
1
解决办法
2万
查看次数

Notepad ++中的PHPDoc注释?

我非常喜欢在Notepad ++中工作,但我还没有找到一个自动执行PHPDoc样式注释的插件.其他PHP IDE(Eclipse,NetBeans,ZendStudio)包含此功能,它非常方便.

基本上我想要的是,如果在函数定义或类定义上面的行我键入:

/**
Run Code Online (Sandbox Code Playgroud)

它会自动填充PHPdoc格式(对于函数,类似于以下内容):

/**  
 * 
 * @param $first_argument
 * @param $second_argument
 * @return
 */
Run Code Online (Sandbox Code Playgroud)

然后当我在注释中输入其他行时,它会用星号开始每一行.

是否有一个NP ++插件可以实现这一点,或者是一种调整NP ++以使其工作的方法?

php comments phpdoc notepad++

10
推荐指数
2
解决办法
9024
查看次数

PHPDoc:嵌套数组中的Typehint(例如2维)

是否有正确的方法来记录在另一个维度内的数组中的值/对象?

通常,数组将按如下方式处理:

/** @var ClassName[] $Array */
$Array = array( $InstanceOfClassName,.. )
Run Code Online (Sandbox Code Playgroud)

但是我需要这样的东西:

/** @var ClassName[][] $Array */
$Array = array( 0 => array( $InstanceOfClassName,.. ) )
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,那么正确的PHPDoc表示法是什么?

php arrays phpdoc code-documentation

10
推荐指数
2
解决办法
6139
查看次数

PhpDoc用于接口和类实现接口 - 区别

问题很简单 - 我应该如何区分用于接口的phpdoc和用于实现接口的类?应该/它们可以是相同的还是接口文档应该尽可能通用,并且实现此接口的类更具体?

我从我的真实代码中包含一个方法phpDoc:

我的界面:

interface CacheInterface 
{
    /**
     * Adds data to cache
     *
     * @param string $objectId    Name of object to store in cache
     * @param mixed  $objectValue Data to store in cache
     * @param mixed  $lifetime    Lifetime of cache file
     * @param string $group       Name of cache group.
     * @param array  $params      Parameters that distinct cache files.
     * @param array  $files       Name of files that are checked if cache is valid.
     * @return bool               True if cache …
Run Code Online (Sandbox Code Playgroud)

php documentation interface class phpdoc

10
推荐指数
1
解决办法
7419
查看次数

PHP Doc泛型类型声明

我正在开发一个库,该库使用phpDocumentor规范来确定使用反射的类型系统.但是,我找不到有关泛型类型声明的任何信息.

是否有任何方式应指定泛型类型声明?

例如:是否有任何规范(正在进行中)指定如下内容:

/**
 * @template <T extends Base>
 */
class Collection {

    /**
     * @return Iterator<T>
     */
    function get_iterator();

}
Run Code Online (Sandbox Code Playgroud)

请注意,上面的代码只是一个示例,用于说明泛型类型声明的含义.我不希望这与集合和迭代器有任何关系.

php phpdoc

10
推荐指数
1
解决办法
2175
查看次数

PHPStorm类型提示基类的子类

关于这篇文章:

在PHPStorm中,当我有一个从每个子类返回不同类型的超类方法时,如何进行类型提示工作,

这个是关于PHPStorm类型提示的边缘情况.请尽量跟进 - 我会尽力让自己尽可能清楚:

所以,我有这个基础抽象类:

abstract class myBaseController {
    protected $_model;
    ...
}
Run Code Online (Sandbox Code Playgroud)

另一个类继承自:

class myController extends myBaseController {
    $hello = 'hello';
    ...
}
Run Code Online (Sandbox Code Playgroud)

并由第三类进一步扩展:

class myNewController extends myController {
    public $myvar;
    $this->_model = new myModel();
    ...

    public function myFunc(){
        // !!form is underlined as: "Method 'form' not found in class"!!
        $form = $this->_model->form($new_variable); 
    }
Run Code Online (Sandbox Code Playgroud)

下面是myModel类的示例:

class myModel extends BaseModel {
    $world = 'world';
    public function form($my_variable) {
        do_something();
    }
Run Code Online (Sandbox Code Playgroud)

我真正的问题是如何正确"phpdoc"这种情况:

子类myNewController使用继承变量_model来分配myModel具有唯一函数的另一个类的实例 …

php phpdoc phpstorm

10
推荐指数
1
解决办法
1893
查看次数

@internal实际意味着什么以及如何使用它?

@internal在PHPDocs中使用时标记的含义是什么?它是如何工作的?我已阅读此标记的文档并获得此定义.

@internal标记用于表示关联的结构元素是此应用程序或库内部的元素.它也可以在长描述中用于插入仅适用于该软件开发人员的文本.

我得到了它的要点,但我不明白的是我将如何在项目中实际使用它?我已经阅读了这个例子,我的理解是标记为一个功能@internal意味着它意味着它被用作软件的一部分而不被外部的东西使用.例如,在PHP库中,如果函数被标记为@internal它不是库提供的公共API的一部分.

我的问题:

  • 我的理解是@internal正确的吗?如果没有,那么正确的用法是什么?
  • 如果我的理解正确的,为什么PhpStorm会删除我的@internal功能,暗示它们不打算被使用?我如何正确使用标记为@internal?的功能?

phpdoc phpstorm

10
推荐指数
1
解决办法
2858
查看次数