可迭代对象的正确 phpdoc 注释?

2024-03-07

我在尝试为以下代码示例获得正确的自动完成功能时遇到了一些问题。我在 Win7 机器上使用 PHPStorm 7。

首先只是一个简单的课程。

/**
 * Class myObject
 */
class myObject
{
    /**
     * some method
     */
    public function myMethod()
    {
        // do something
    }
}

这是一个集合类,它可以包含前一个类的多个实例并实现IteratorAggregate界面。

/**
 * Class myCollection
 */
class myCollection implements IteratorAggregate
{
    /**
     * @var myObject[]
     */
    protected $_objects = array();


    /**
     * @param myObject $object
     * @return myCollection
     */
    public function add(myObject $object)
    {
        $this->_objects[] = $object;

        return $this;
    }


    /**
     * @return ArrayIterator
     */
    public function getIterator()
    {
        return new ArrayIterator($this->_objects);
    }
}

这是代码示例。

$collection = new myCollection;

$collection->add(new myObject);
$collection->add(new myObject);

foreach ($collection as $object) {
    $object->myMethod(); // gets no autocompletion
}

正如您可能已经猜到的(并在示例中阅读)myMethod()调用不会自动完成,并且正在代码分析中列出。我发现的唯一方法是添加评论块$object,说实话,我觉得这非常烦人。

/** @var $object myObject */
foreach ($collection as $object) {
    $object->myMethod(); // gets autocompletion now, but sucks
}

那么,关于如何解决这个问题有什么想法或基础知识吗?


/**
 * @return ArrayIterator|myObject[]
 */
public function getIterator()
{
    return new ArrayIterator($this->_objects);
}

对于扩展类(上面是基类):

/**
 * @method myObject[] getIterator()
 */
class ExtendedClass extends BaseCollection
{
}

or

/**
 * @method iterable<myObject> getIterator()
 */
class ExtendedClass extends BaseCollection
{
}

我认为这将是处理此类案件的最佳方式。至少它可以与 PHPStorm 一起使用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可迭代对象的正确 phpdoc 注释? 的相关文章

  • 从关系中合并 Laravel 中的集合

    假设我有 3 张桌子 Images Subject Style 关系是多对多 图像 主题 和多对多 图像 样式 现在我想做一些类似的事情 result subjectResult gt images gt merge styleResult
  • 简单的颜色变化

    我正在创建一个用户界面 用户可以在其中更改页面的颜色值 我想要的是获取分配给其背景颜色的值并将其变亮一定程度 我只是想获得一条亮点线 而不必每次都制作新图像 示例 用户将背景颜色设置为 ECECEC 现在我希望某个元素边框变成 F4F4F4
  • 匹配括号内任何字符的正则表达式

    尝试创建一个与括号内的任何字符匹配的正则表达式 我的正则表达式模式是这样的 preg match listanswer answer 括号内的所有字符串都是匹配模式 但问题是 当我尝试匹配例如 this word sample data 它
  • 如何使用 PHP 动态插入 CSS 类?

    下面的代码有什么问题 我想在相应的情况下动态插入 当前 CSS 类 li 单击元素 谢谢 section section li
  • PHP:在多维数组中查找相同的键并合并结果

    我有一个多维数组 如下所示 array 0 gt array WS gt array id gt 2 name gt hello 1 gt array SS gt array id gt 1 name gt hello2 2 gt arra
  • 如何在 Laravel Mix 中将公共路径更改为包含下划线的路径?

    Laravel 5 4 中引入了 Mix 来编译资产并维护资产管道 Mix 默认为您的公共目录被命名public 在许多情况下 包括我的 我的公共目录被称为其他名称 就我而言 是public html 如何更改资源编译到的公共目录 我尝试过
  • Laravel 5.6 - 注册表无法正常工作并且不显示任何错误

    在我最近的一个项目中 定制登记表不管用 当我单击注册按钮时 它会重新加载注册表单 不会打印任何错误 并且不会将数据插入数据库中 这是注册表的外观 这里是移民文件代码 public function up Schema create user
  • Mongodb $push 嵌套数组

    我想向我的嵌套数组添加新数据 我的文档是 username erkin email email protected cdn cgi l email protection password b playlists id 58 name asd
  • .htaccess 在动态文件夹名称中加载索引

    我在 htaccess 加载动态文件夹名称中的索引时遇到问题 这是我的目录结构 root products gt this is constant folder name 而不是使用 GET 获取产品 url root products i
  • MySQL:“您的 SQL 语法错误...靠近键...”? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我发现了一个非常酷的用于丢失密码的脚本 但是这一行给我带来了问题 r mysql query INSERT INTO keys u
  • 我的 PHP 代码不会将记录插入到 mySQL 数据库表中[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我的网站上
  • 返回上一页

    我正在使用表格来 评价 页面 此表单将数据 发布 到其他地方的 php 脚本 我只是想在处理表单后显示一个链接 这将使用户返回到上一页 我可以在 php 脚本中使用 javascript 来执行此操作吗 GF 您可以使用链接来调用histo
  • PHP OOP 静态属性语法错误 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 为什么不
  • WooCommerce 自定义产品类型选项不隐藏自定义产品选项卡

    我刚刚向我的 WC 管理产品页面添加了自定义产品类型选项 add filter product type options this filter product type options 99 1 public function filte
  • 对象的引用计数

    在我的代码中 我使用一个小的数据存储类 它是在不同的地方创建的 为了避免内存泄漏并简化事情 我想使用引用计数 所以我这样做了 type TFileInfo class TInterfacedObject IInterface 并删除了我对
  • Apache 2.4.9 在启用 ssl 模块并设置 ssl 证书后失败

    Apache 在尝试设置 ssl 证书后抛出以下错误 ssl emerg pid 30907 AH02572 Failed to configure at least one certificate and key for localhos
  • 由于未定义符号,PECL solr 未加载:curl_easy_getinfo

    我正在尝试加载 PECL solr 扩展 我尝试使用 pecl install solr 并下载并使用 phpize configure make 来安装它 在这两种情况下 扩展安装时都没有错误 但在 apache 重新启动后 或在命令行上
  • 使用 PHP 创建图表并导出为 PDF

    我正在寻找有关使用 PHP 创建图表的建议 我还希望能够将这些图表导出到 PDF 文档 我目前正在使用谷歌图表 但我不喜欢将我的所有信息发送到谷歌的想法 我更喜欢自己的托管解决方案 我见过很多 Flash 解决方案 但我不知道有什么方法可以
  • PHP 用星号替换所有字符

    假设我有一个字符串形式的密码 password thisisaplaintextpassword 我怎样才能把它变成下面的样子 password 我想通过电子邮件向用户发送他们的帐户详细信息 但不想发送整个内容 Use 字符串重复 http
  • __callStatic():从静态上下文实例化对象?

    我对 PHP 中的 静态 和 动态 函数和对象如何协同工作感到困惑 特别是在 callStatic 方面 callStatic 的工作原理 您可以有一个普通的班级 MyClass 在班级内您可以 放置一个名为 callStatic 的静态函

随机推荐

  • docker compose 容器内的 SSH 代理转发

    Could not open a connection to your authentication agent 我正在关注安装方法 SSH AUTH SOCK作为一个卷 https gist github com d11wtq 86995
  • Outlook 2003 不导入 .ics 日历,而 Outlook 2007 则可以

    我有一个使用 PHP 手动创建的 ics 文件 如下所示 BEGIN VCALENDAR PRODID Microsoft Corporation Outlook 11 0 MIMEDIR EN VERSION 2 0 METHOD PUB
  • 如何等待一个元素从 DOM 中移除?

    每当我尝试等待从量角器测试正在测试的网页上的当前 DOM 树中删除 DOM 元素时 我都会遇到此问题 当我尝试等待 DOM 元素通过 user2912739 在另一个线程中提供的这项好技术隐藏时 我已经掌握了它 var el element
  • Z3 支持非线性算术

    我知道 Z3 对非线性算术有一些支持 但想知道扩展到什么范围 是否可以指定支持和不支持 或可能超时 哪些类别的非线性算术 提前了解这些将帮助我尽早放弃我的任务 似乎不支持与电源相关的内容 如下所示 def pow2 x k Int k re
  • 如何在android应用程序中检查TCP套接字是否已连接

    我正在编写一个简短的测试应用程序来练习连接到服务器 该应用程序所做的就是从 editText 框中获取 IP 然后连接到服务器 看起来我可以连接到服务器 因为我能够将数据发送到服务器并让服务器打印它 我想添加一些错误检查 以在尝试向服务器发
  • navigator.geolocation.getCurrentPosition 在使用 React Native 的 iOS 模拟器中未触发

    在 Android 模拟器中 下面的代码工作正常 但在 iOS 中 它甚至不进入 navigator geolocation getCurrentPosition 我已经通过调试菜单更新了模拟器的自定义位置 但如果它甚至没有进入 navig
  • OSX 上可执行文件中的 Clang 链接 debug_info

    在 OSX 上 当您像这样链接来自多个目标文件的二进制文件时 clang g myfile cpp o myfile o clang myfile o shared o myfile dylib 它将生成一个 debug info部分 等
  • 命令行参数、cant 或两个变量

    include
  • 子串、切片、其他?

    根据MDN https developer mozilla org en US docs Web JavaScript Reference Global Objects String substr substr被认为是最终可能被弃用的遗留代
  • 如何从 microk8s 部署 Pod 访问网络中的主机

    我正在尝试从部署容器内访问位于另一台服务器 但在我的网络上 的主机 并且我正在使用microk8s 问题是在我所在的服务器上microk8s安装完毕后我可以轻松 ping 通它ping my network host qa local 但是
  • ngInject 和闭包编译器

    我尝试在高级模式下编译以下代码但未成功 description App configuration param angular routeProvider routeProvider constructor ngInject functio
  • R 中的向量化 IF 语句?

    x lt seq 0 1 10 0 1 y lt if x lt 5 1 else 2 这会发出警告 或自 R 版本 4 2 0 以来的错误 the condition has length gt 1 我想要if对每个案例进行操作 而不是对
  • 在方法中编写“return”的完美方式是什么

    我不喜欢有多个返回行的方法 所以我创建了一个带有字符串结果的返回值 并且在每种情况下我都写 result some 但是当我编写 try catch 机制时 我必须设置公共字符串结果 因为 如果我在 try 中返回结果 编译器将启动错误 并
  • 将 bool 属性绑定到 WinForm 的 BackColor 属性

    我有一个Form in my WinForm应用程序 其中包含TextBox和这个TextBox绑定到FirstName的财产Person Object public class Person string firstName public
  • 使用 spring-session 在微服务之间传播凭据的最佳方法

    我们使用的架构与中描述的架构非常相似spring io 上的这个很棒的指南 https spring io guides tutorials spring security and angular js the api gateway pa
  • YouTubePlayer:从纵向手机方向进入全屏可以轻松退出全屏

    如果您纵向握住手机并单击全屏按钮 YouTubePlayerView 如果您稍微摇动手机 它可以轻松让您返回 关闭全屏 官方 YouTube 应用程序正常工作 您在纵向握住手机的同时按下全屏按钮 如果您稍微摇晃它 它仍然保持全屏横向模式 如
  • 我可以在蛋白石中使用红宝石吗?

    There s opal irb and opal jquery and vienna但是有没有办法通过Opal直接在浏览器中使用gems呢 您可以添加宝石lib到 Opal 加载路径的路径 使用Opal use gem 常见的陷阱有 使用
  • 将数字拆分为总和部分

    有没有一种有效的算法可以将数字分成N分段 以便数字之和等于原始数字 并具有最小基数 例如 如果我想将 50 分成 7 个小节 并且最小基数为 2 我可以这样做10 5 8 2 3 5 17 以及任何其他数量的组合 我想将数字保留为整数 并且
  • 每个日志级别应包含哪些信息? [复制]

    这个问题在这里已经有答案了 可能的重复 日志记录代码应该放在哪里 什么级别 https stackoverflow com questions 3658527 where what level should logging code go
  • 可迭代对象的正确 phpdoc 注释?

    我在尝试为以下代码示例获得正确的自动完成功能时遇到了一些问题 我在 Win7 机器上使用 PHPStorm 7 首先只是一个简单的课程 Class myObject class myObject some method public fun