因此,在PHPDoc中,可以@var
在成员变量声明之上指定提示其类型.然后是一个IDE,例如.PHPEd将知道它正在使用什么类型的对象,并且能够为该变量提供代码洞察.
<?php
class Test
{
/** @var SomeObj */
private $someObjInstance;
}
?>
Run Code Online (Sandbox Code Playgroud)
这很有效,直到我需要对一个对象数组做同样的事情,以便在稍后迭代这些对象时能够获得正确的提示.
那么,有没有办法声明一个PHPDoc标记来指定成员变量是一个SomeObj
s 数组?@var
例如,数组是不够的,@var array(SomeObj)
似乎没有效果.
只是一个简单的问题:我已经看到一些PHP函数在顶部被注释,使用了我不知道的格式:
/**
*
* Convert an object to an array
*
* @param object $object The object to convert
* @return array
*
*/
Run Code Online (Sandbox Code Playgroud)
我的IDE为@param和@return之类的内容提供了一个下拉选项,因此必须在某处记录.我试过搜索谷歌,但它的搜索中不会包含@符号.
这种评论格式是什么?我在哪里可以找到相关信息?
只是好奇是否有一种方法可以为netbeans提供常规变量的类型提示,以便intellisense选择它.我知道你可以为类属性,函数参数,返回类型等做这些,但我无法弄清楚如何为常规变量做到这一点.在你有一个可以返回不同对象类型的方法(比如服务定位器)的情况下,它会非常有用.
像这样的东西:
/**
* @var Some_Service $someService
*/
$someService = ServiceLocator::locate('someService');
Run Code Online (Sandbox Code Playgroud)
在之后使用$ someService的情况下,netbeans将提供Some_Service类中定义的所有可用方法.
真的有必要做这样的事情:
/**
* ...
*
* @return void
*/
Run Code Online (Sandbox Code Playgroud)
我有很多没有返回值的方法,在评论中添加这样的东西似乎很多余.将它排除在外会被认为是不好的形式吗?
我有这个代码:
/**
* Days to parse
* @var int
*/
const DAYS_TO_PARSE = 10;
...
Run Code Online (Sandbox Code Playgroud)
我不认为使用@var
对于常量是正确的,我没有看到任何@constant
PHPDoc标记.这样做的正确方法是什么?
我正在努力编写可读且易于理解的文档,该文档描述了传递给函数的Array选项的多树结构.
这是一个示例数组结构.
$arr = [
'fields' => [
'title' => [
'name' => 'Document.title',
'format' => 'string',
'readonly' => true
]
]
];
Run Code Online (Sandbox Code Playgroud)
上述数组有许多可能的选项,但这用作理解该结构的函数的参数.
function doSomething(array $arr) { ... }
Run Code Online (Sandbox Code Playgroud)
我想记录如何在PHPDoc中构建数组,但我不确定正确的方法是什么.
这就是我现在拥有的.
/**
* Holds configuration settings for each field in a model.
* Defining the field options
*
* array['fields'] array Defines the feilds to be shown by scaffolding.
* array['fields'][fieldName] array Defines the options for a field, or just enables the field if array is not applied.
* …
Run Code Online (Sandbox Code Playgroud) 我有一个返回当前对象的方法,我该如何记录?
/**
* set something
*
* @return this
*/
public function setSomething(){
// ...
return $this;
}
Run Code Online (Sandbox Code Playgroud)
或者我应该做的@return self
还是@return Current_Class_Name
?
这个问题是与这一个:
是否可以提示返回数组中的项类型?
例如:
/**
* MyFunction does a lot of things
*
* @param TClass1 $var1
* @param TClass2 $var2
* @return array[TClass3] //<- I'm trying to express this
*/
function MyFunction( $var1, $var2 ){
...
Run Code Online (Sandbox Code Playgroud)
我使用NetBeans作为IDE,它(像许多其他PHP IDE一样)利用上面函数的doc bloc来确定返回值的类型.
如果我能解释数组中预期的类型,我希望IDE能够为以下情况提供正确的完成:
$myTab = MyFunction( $foo, $bar );
foreach( $myTab as $itm ){
$itm->myFi| //offer the completion for a TClass3 object
}
Run Code Online (Sandbox Code Playgroud) 最近,我决定尝试使用Sublime Text 2作为TextMate替代品(它是).我非常喜欢它,但唯一让我烦恼的问题是它在按下"Enter"时不会继续PHP Comment/Doc Block.
它只是添加了新的空行而不是以"*"开头的行,如此处所示 http://cl.ly/AFcP/o
这个问题有方法解决吗?我试着为它做一个键绑定,但这对我来说太复杂了,特别是因为我对编辑器不太熟悉.
提前致谢.
这里有两个类似的问题,但是没有一个答案似乎有效.
PHPDoc似乎没有将我的函数中的可选参数识别为可选参数,例如:
/**
* Opens the connection and sets encoding
*
* @param string $encoding Encoding.
*/
public function __construct($encoding='UTF-8')
{
$this->connect_mysqli();
$this->set_encoding_mysqli($encoding);
}
Run Code Online (Sandbox Code Playgroud)
它不应该认为$ encoding是可选的,或者我在这里遗漏了什么?我真的试着谷歌并阅读文档,但我找到的只是:
如果你没有在实际代码中指出参数是可选的(通过"$ paramname ='默认值'"),那么你应该在参数的描述中提到参数是可选的.
所以我看到我的代码没有问题,但我在文档中得到的是:"__ construct(string $ encoding)",在参数是可选的任何地方都没有任何符号.