PHP 5.3 中的闭包内的 $this 是否有解决方法?

2023-12-03

我的 IDE 警告我$thisPHP 5.4 之前的闭包中不允许使用。是否有解决方法,无需从 5.3.10 升级 PHP?看fire()方法如下:

<?php

use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;


class UpdateItemImageSizes extends Command {

    /**
     * The console command name.
     *
     * @var string
     */
    protected $name = 'namespace:updateimagesizes';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Updates image size information in the items table.';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function fire()
    {
        $this->info('Starting chunk');
        Item::chunk(1000, function($items)
        {
            foreach ($items as $item)
            {
                $this->info($item->img);
            }
        }
        );

    }

    /**
     * Get the console command arguments.
     *
     * @return array
     */
    protected function getArguments()
    {
        return array(
            //array('example', InputArgument::REQUIRED, 'An example argument.'),
        );
    }

    /**
     * Get the console command options.
     *
     * @return array
     */
    protected function getOptions()
    {
        return array(
            array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null),
        );
    }

}

如果 info 方法是公开的,你可以这样做:

//...
public function fire()
{
    $self = $this;
    $self->info('Starting chunk');
    Item::chunk(1000, function($items) use ($self)
    {
        foreach ($items as $item)
        {
            $self->info($item->img);
        }
    }
    );

}
//...


如果信息是私有的,则不能,并且需要升级到 php 5.4,因为在 PHP 5.3 中,闭包中的上下文与对象上下文不同。

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

PHP 5.3 中的闭包内的 $this 是否有解决方法? 的相关文章

随机推荐

  • 如何在 MIN 或 MAX 中包含空值?

    我有一个存储时间跨度数据的表 该表的架构类似于 ID INT NOT NULL IDENTITY 1 1 RecordID INT NOT NULL StartDate DATE NOT NULL EndDate DATE NULL 我正在
  • 如何在 ASP.NET 中获取经过 URLEncoded 或包含百分比字符的查询字符串

    当查询字符串是 UrlEncoded 或在 ASP NET 中具有百分比字符时 如何从 Request 对象获取实际的查询字符串 基本上 如果我有一个像这样的网址 Default aspx p b4 如何获得用 b4 填充的字符串 Requ
  • 关于岗位加薪

    int get static i 1 return i int main int argc char argv printf d d d n get get get return 0 输出 3 2 1 顺序取决于编译器 问题 但是为什么静态
  • SQL Server:尝试在存储过程中创建视图

    我试图在存储过程中创建视图 但遇到错误 我的代码是 alter PROCEDURE p Azmoon1 AS begin EXEC IF OBJECT ID r r Sales01 Requests Duplicates V IS NOT
  • 如何在jsf中显示多对多的jpa集合?

    我在用户和组表之间创建了多对多连接表 所以我在每个实体 用户和组 中有一个集合 ManyToMany mappedBy usersCollection private Collection
  • ASP.Net 菜单控件 - 水平 - 不显示子选项

    我正在尝试使用 ASP Menu 控件 这相当简单 我想要的是水平的 每个第一级项目都会有子项目 我可以将其水平放置 当我将鼠标悬停在即时报告 or the 可配置的报告选择它似乎弹出一个 div 或其他东西 但它是空的 我已经尝试过格式化
  • php xpath根据多个属性和父属性检索属性值

    我需要从xml中选择节点 条件见下文 我使用的是 simplexml 所以 xpath 必须是 1 0 XML 片段
  • python for循环和remove方法

    假设我们有一个清单 我想一一说清楚 看看这段代码 code1 gt gt gt x 9 0 8 1 7 2 5 gt gt gt for i in x x remove i gt gt gt x 0 1 2 最后x不清楚 为什么 和 cod
  • 使用 pd.read_clipboard 读取漂亮打印/格式化的数据帧?

    这是另一个数据框question Location Date Value India 2015 03 15 200 India 2015 02 15 140 India 2015 01 15 155 India 2015 12 15 85
  • Linux 中的 getch() 和 getche() 等效项是什么?

    我无法在 Linux 中找到 conio h 的等效头文件 有什么选择吗getch getche Linux 下的函数 我想制作一个开关盒基本菜单 用户只需按一个键即可给出选择 并且进程应该向前移动 我不想让用户在按下他的选择后按下回车键
  • 类型错误:Object(...) 不是 index.js 上的函数

    您好 当我在浏览器中运行代码时出现此错误 类型错误 Object 不是函数 src index js src index js 31 28 28 firebaseStateName firebase 29 29 30 常量初始状态 31 c
  • 如何在 Palantir Foundry 中解析 xml 文档?

    我有一套 xml我想要解析的文档 我以前曾尝试使用获取文件内容并将它们转储到单个单元格中的方法来解析它们 但是我注意到这在实践中不起作用 因为我看到运行时间越来越慢 通常只有一项任务需要执行运行数十小时 我的第一个变换是 xml内容并将其放
  • 带有光标鼠标射线原点的 aframe 嵌入场景

    嵌入场景和鼠标光标选项似乎存在错误 cursor rayOrigin mouse 我在一个盒子上放置了 mouseenter 和 mouseleave 事件来改变它的大小 只要页面包含在浏览器中 它就可以正常工作 但是当页面 可滚动 时 事
  • 使用corona sdk的后台无限

    我正在尝试滚动 Corona sdk 中的背景 无限背景 我重复使用了两张图像 854x176 我尝试了这个功能 function mov self event if self x lt 854 then self x 854 else s
  • 是否可以从本机代码访问 Dalvik VM

    我希望能够使用 Android 中的本机代码来定位 Dalvik VM 这意味着使用中列出的本机类平台 dalvik在 android 源存储库下 我特别想打电话Sync dvmLockObject及其对应物Sync dvmUnlockOb
  • 没有数组的埃拉托斯特尼筛法?

    我必须为 埃拉托斯特尼筛 算法编写一个java代码 以便在控制台上打印出达到给定最大值的素数 但我不允许使用数组 我们的教授告诉我们 只有借助循环才能做到这一点 所以我想了很多 也用谷歌搜索了很多关于这个话题的信息 但找不到答案 我认为这根
  • 无法在 Javafx 应用程序中为 javascript 创建 javax 脚本引擎

    我正在使用 NetBeans 12 0 和 windows 10 64 位 我的 JDK 是 15 0 2 和 JavaFx SDK 16 当我尝试构建我的 javafx 应用程序时 它显示以下构建错误 C Users musta OneD
  • 来自 survfit 对象和 textConnection 的中值

    我使用了其他人的方法来获取中位数survfit对象 即使用textConnecton 但我遇到了几个问题 example library survival data cancer cox ph lt coxph Surv time stat
  • php循环遍历json数组

    我有一个像这样的 json 字符串 fields string fields customers name john id d1 name mike id d2 name andrew id d3 name peter id d4 如何打印
  • PHP 5.3 中的闭包内的 $this 是否有解决方法?

    我的 IDE 警告我 thisPHP 5 4 之前的闭包中不允许使用 是否有解决方法 无需从 5 3 10 升级 PHP 看fire 方法如下