如何在 IDE 中输入提示上下文?

2024-05-06

我在用Closure::call (http://php.net/manual/en/closure.call.php http://php.net/manual/en/closure.call.php) 在类上下文中调用外部闭包。

这是一个简单的重现:

class Foo {
    private $bar = 'baz';

    /**
     * Executes a closure in $this context and returns whatever the closure returns.
     *
     * @param \Closure $closure
     * @return mixed
     */
    public function callClosureInThisContext(\Closure $closure) {
        return $closure->call($this);
    }
}

class Closures {
    /**
     * @return \Closure
     */
    public function getClosureForFoo() : \Closure {
        return function () {
            // how do I tell my IDE that in this context $this is actually class Foo,
            // and not the class Closures?
            print $this->bar;
        };
    }
}

$foo = new Foo();
$closures = new Closures();
$foo->callClosureInThisContext($closures->getClosureForFoo()); // prints "baz"

This works as expected, but my IDE is of course, not happy, and is warning me about the "field bar not found": enter image description here

我能否以某种方式告诉 IDE(在本例中为 PhpStorm)该闭包将在另一个类中使用并且它应该假定其上下文?


try

/** @var $this Foo */
print $this->bar;

除了 Closure 之外,它还会为 Foo 类添加自动完成功能

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

如何在 IDE 中输入提示上下文? 的相关文章

  • PHP 如何判断用户是否按下了 Enter 键或 Submit 按钮?

    我遇到的问题是我在一个表单中有多个提交输入 每个提交输入都有不同的值 我更愿意将它们保留为提交 Whenever the user presses Enter it is as though the topmost submit input
  • 简单的 PHP 条件帮助: if($Var1 = in list($List) and $Cond2) - 这可能吗?

    这是一个可能的功能吗 我需要检查一个变量是否存在于我需要检查的变量列表中 并且 cond2 是否为 true 例如 if row name 1 2 3 Cond2 doThis 它对我不起作用 我在复制粘贴中更改的只是我的列表和变量名称 i
  • PHP 会话不适用于游戏

    我正在尝试模仿一款名为 SKUNK 用骰子玩 的游戏来完成一项作业 我无法让会话正常工作 这是我第一次使用 PHP 我还被告知无需会议即可完成 这是我的代码
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • 如何使用 php 下载/打印页面的特定部分

    我有一个 HTML 页面如下 Lorem Ipsum is simply dummy text of the printing and typesetting industry Lorem Ipsum has been the indust
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 通过 $_SESSION 从一个脚本发送到另一个脚本期间数据丢失

    我正在尝试将一个充满属性的对象从一个 PHP 发送到另一个 PHP SESSION object obj where obj是一个用 foreach 循环指定的对象 foreach array of objects as obj SESSI
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • php 错误 fopen(): 文件名不能为空

    发送带有附件代码的电子邮件工作正常 最近我们已将文件传输到另一个托管服务器 idk 发生了什么 它显示以下错误 警告 fopen 第 106 行 home hugerecruitmetnt public html validatecva p
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val

随机推荐

  • C++ 中跨多个文件的类

    我几乎 100 确定我在这两个类中的语法都是正确的 但是我收到以下错误 对于 CShape cpp 错误 C2011 CShape class 类型重新定义 对于 CCircle cpp 错误 CS2504 CShape 基类未定义 这是
  • 在 CSS 中设置 TableView 样式 (JavaFX)

    如何在 TableView 中设置 THIS 点的样式 我的 CSS 代码如下所示 Empty Stylesheet file root fx background color 262626 table view fx background
  • MSTest:如何增加测试时间

    我有一个测试需要运行超过 1 分钟 VS2008 MSTest 测试是从 VisualStudio 启动的 const int TestTimeout 1 TestMethod Timeout 10 60 1000 10 minutes p
  • 在 htaccess 中设置内存限制 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在使用 WordPress 我需要增加内存 因此我将以下行添加到我的 htaccess 文件中 BEGIN WordPress
  • 使用 gcc 的中间 GIMPLE 格式

    根据本文 http en wikipedia org wiki Intermediate languagegcc 在生成代码之前使用多种中间格式 我读到 GIMPLE 格式使用三个地址代码 这似乎是最容易使用的中间语言 但我需要更多细节 因
  • 从管理页面删除 Django 中的 ManyToManyField 并单击按钮

    我有两个模型如下 模型 py from django db import models from django contrib auth models import User class Skill models Model skill m
  • 通过SSIS动态创建Excel表

    在 SSIS 中使用执行 SQL 任务 创建的 Excel 文件 包含多个列和不同的数据类型 这里的问题是 INT Money 列在 Excel 中显示为文本列 即使 Excel 表是使用 Int Money 数据类型创建的 我尝试过使用双
  • UITextField 清除按钮不显示

    I want to show a clear button always in a UITextField I have tried to both set this in xib Interface Builder and in code
  • 如何在警报或确认框中显示粗体文本?

    如何获取粗体文本并更改警报或确认框中文本的颜色 var conFrm confirm Following List s already Sent n strong List Name strong ss replace n b Name b
  • 如何使用 Jackson 重命名 JSON 序列化中的根密钥

    我正在使用 Jackson 对对象列表进行 JSON 序列化 这是我得到的 ArrayList id 1 name test name 但我想要这个 rootname id 1 name test name ie showing the s
  • 将两个 .less 文件合并为一个

    假设我少了两个文件 first less a b font size 13px color lime and second less import first less a font family sans serif 我想要一种将它们组合
  • 您知道 PAC 设计模式的任何示例吗?

    任何人都可以指出正在使用的任何网站或网络应用程序表现 抽象 控制 http www dossier andreas net software architecture pac html设计模式而不是MVC 像这样的桌面应用程序很容易找到 例
  • 如何在android中的地图触摸位置上动态绘制形状

    我想绘制一个形状 无论用户在哪里触摸地图 都应该动态绘制 我对绘制这些形状没有任何想法 我怎样才能做到这一点 我可以通过画布完成这个工作吗 我正在使用 MapFragment 请看图片 请给我任何想法 任何帮助表示赞赏 您可以通过添加一个来
  • 在 yii2 gridview 中输入时进行过滤

    我需要在您键入时过滤网格视图 默认情况下 仅当按下回车键时才进行过滤 您应该使用自己的 js 来处理这个问题 例如 this gt registerJs body on keyup yiiGridView grid id filters i
  • Objective C 中如何对数组进行排序? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在 iPhone 中对包含数字作为字符串的数组进行排序 https stackoverflow com questions 6097119 how to sort array having num
  • 在本地主机中保存更改后,React 组件不会在浏览器中重新加载

    我使用 Create React App 创建了一个新的 React 项目 在旧项目中 每当我在组件中进行更改并保存组件时 它都会反映在浏览器中 但在新项目中 当我保存代码中的更改时 浏览器不会重新加载 也不会反映更改 所以我停止了正在运行
  • Nginx反向代理返回404

    我的 Nginx 安装并运行 下面是配置 etc nginx nginx conf 我要全部转发 api 到我的 tomcat 服务器 该服务器在同一服务器上的端口 9100 上运行 类型http myhost 9100 api apps有
  • ActivityManager.getRunningTasks 已弃用 android

    我正在 android 中处理推送通知 我使用下面的方法来显示通知 但问题是现在 ActivityManager getRunningTasks 1 正在被弃用 从一个 stackoverflow 问题中我读到 你可以使用getAppTas
  • 如何删除html中单击的元素周围的虚线

    我发现如果有一个a页面中的链接不链接到新页面 那么当用户单击它时 该元素周围会有一条虚线 只有当用户单击页面中的其他任何内容时它才会消失 如何删除它 Example 注意元素周围的虚线Section 2 Use outline none锚定
  • 如何在 IDE 中输入提示上下文?

    我在用Closure call http php net manual en closure call php http php net manual en closure call php 在类上下文中调用外部闭包 这是一个简单的重现 c