我的IDE警告我在PHP 5.4之前的句子中不允许$this
。如果没有从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),
);
}
}
答案 0 :(得分:3)
如果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);
}
}
);
}
//...
如果info是私有的,你就不能并且需要升级到php 5.4,因为在PHP 5.3中,闭包中的上下文与对象上下文不同。