- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
想象一下以下假设的类结构,所有 PHPdoc 提示都正确设置的情况并不少见:
class BaseFilter {
/** ...base methods... */
}
class TextFilter extends BaseFilter {
public function setMinLength($len)
{
/** ...irrelevant */
}
}
class SomethingWithFilters
{
/**
* @param BaseFilter $filter A valid filter to be added.
* @return BaseFilter The filter that was added for easy chaining
*/
public function addFilter(BaseFilter $filter)
{
$this->filters[] = $filter;
return $filter;
}
/** @var BaseFilter[] A list of filters */
private $filters = [];
}
现在我使用这段代码如下:
$myClass = new SomethingWithFilters();
$myClass->addFilter(new TextFilter())->setMinLength(8);
在 phpStorm(可能还有大多数其他 IDE,因为它有意义)中,第二行产生警告,说明 BaseFilter
不包含方法 setMinLength
。虽然绝对正确,但这是有意的多态行为,充分利用了 PHP 的后期绑定(bind)特性——在像 C# 这样的语言中,您必须显式地向上转换。因此,我希望 phpDoc 语法在这里支持某种动态符号,声明 addFilter
的返回类型与提供的 $filter
类型相同。
我尝试将其更改为:
@return $filter
但这只是显示为对 BaseFilter
的引用,并被如此对待,仍然发出警告。
是否有任何标准化的方式来实现这种效果,至少普通的 IDE 可以理解它?
最佳答案
如果 addFilter() 上的 @return 实际上列出了可以返回的所有可能的 BaseFilter 子级,IDE 在这里可以做的最好的事情可能是:
@return BaseFilter|TextFilter|AnotherFilter
这可能触发您的 IDE 为所有那些可能的返回类提供所有可能的方法。这取决于所使用的 IDE 是否知道如何识别此类可能返回类型的列表。显然,将这样的列表放在许多返回标记中,这对您来说会很乏味。
我不知道有哪个 IDE 会单独查看您的 BaseFilter 返回类型,生成所有可能的父+子方法的列表,从而使整个列表可用于自动完成自动。
关于用于指定与参数类型相同的返回类型的 phpDoc 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19208482/
我想知道如何在 phpdoc 注释中转义 phpdoc 注释。 例如,我将如何写这个: /** * Some documentation... * * * /** * * Example
我想整理一个仅部分使用 PHPDoc 的大型函数包含文件。有些函数没有 PHPDoc,比如 function name($var1,$var2){ // explanation what it doe
我有一个类Abc with 方法(主体不重要): /** * @return SomeBaseClass */ function getAll() { ... } 在Abc的 child 类叫 A
我正在寻找正确的方法来使用项目中的 phpDoc-comments 在 Confluence 4.1.4 中生成开发人员文档。 最佳答案 我一直在研究的一种方法是将我的 HTML 输出(类似于 php
我正在使用 laravel。我需要知道如何使用属性在 php 8 中编写 phpdoc。 /** * Transform the resource into an array. *
我正在使用 laravel。我需要知道如何使用属性在 php 8 中编写 phpdoc。 /** * Transform the resource into an array. *
虽然我按照说明安装了 phpDocumentor,但命令行似乎没有响应 phpdoc 给定错误:未找到命令“phpdoc”,您的意思是: 来自 deb phploc 的命令 'phploc' 来自 d
我想用 phpdoc 解析两个或多个文件夹。解析一个文件夹工作正常。 在文档中,我可以看到: -d|–directory[=”...”] Provide a comma-separated list
有没有办法记录特定函数调用 exit() ? 用例是我们有一个函数负责处理重定向(检查已发送的 header ,设置响应代码等...)然后关键地调用 exit() .不幸的是,PHPStorm 不知道
我已经在我们的服务器上安装了 phpDoc,并进行了设置等。它正在正确生成文档。我们使用的是“响应式”模板,但是无论使用什么模板,都会发生此错误。 在“错误”下,扫描的每个文件似乎都有以下错误: Ty
我试图对 Magento 进行逆向工程,我认为通读每一种方法是一个好的开始(官方文档太浅了)。 Magento 似乎没有预先生成的文档,这是公平的,因为每个配置都彼此不同,并且一般地记录它没有意义。代
如何在返回数组的 PHP 方法的文档中指定键的类型? 例如,我将其用于对象数组 @return MyClass[]。 但是我想注释一个像array( 'string' => array( MyClas
是否有适当的方法来记录使用 define() 定义的常量? @var 真的没有意义。我唯一能想到的就是省略标签,只在PHPdoc注释中写描述。 最佳答案 phpDocumentor 不识别或使用 @c
我应该如何正确使用 PHPdoc 来记录类中的可链接方法,如以下示例所示 - 正确用法是什么? class myClass { /** * @return myClass */
我对可用于 phpDocs 的各种 HTML 模板感到非常满意。我想知道我的 PHP 应用程序是否有其他 PDF 模板,我正在将其作为顶点项目编写,并希望将其作为我论文的补充。默认的 PDF 模板似乎
我有一个类,它包含一个文件,方法如下: 在 class.php 文件中: class A { const CONST1 = 5; /** @var int $a */ var $a = 5; publ
是否有用于记录采用单个配置数组而不是单个参数的函数的语法? 我正在特别考虑 CodeIgniter 风格的库,它们使用与此类似的机制: $value) { $this->$key = $
考虑这段代码: class ParentClass { public static function generate($className = __CLASS__){ if(
我发现另一个工具(doxygen)有这样一个选项(HIDE_UNDOC_MEMBERS)。我想知道 phpDoc 是否有类似的东西,只是用 @ignore 标记标记它们。 最佳答案 用@ignore
在 phpdocs 数据类型中使用命名空间的当前状态是什么。 例如: * @param string|Vendor\SomeClass $parameter 最佳答案 至少,phpDocumentor
我是一名优秀的程序员,十分优秀!