Em um trabalho Laravel eu tenho:
use Spatie\Valuestore\Valuestore;
e
public function __construct()
{
$this->settings = Valuestore::make(storage_path('app/settings.json'));
}
e
public function handle()
{
if($this->settings->get('foo') == 'test') {
etc...
e nisto recebo um erro Undefined property App\Jobs\MyJobName::$settings
. O que está errado?
Mesmo se eu fizer isso:
public function handle()
{
$this->settings = Valuestore::make(storage_path('app/settings.json'));
if($this->settings->get('foo') == 'test') {
etc...
Recebo o mesmo erro.
Atualizar com base nos comentários
MyJobName
é chamado em um comando artesanal personalizado, que também usa, Valuestore
mas suponho que não esteja relacionado.
Na aula CustomCommand
:
use Spatie\Valuestore\Valuestore;
e
public function __construct()
{
parent::__construct();
$this->settings = Valuestore::make(storage_path('app/settings.json'));
}
e
public function handle()
{
if($this->settings->get('foo') == 'test') // This works in this custom command!
{
$controller = new MyController;
MyJobName::dispatch($controller);
}
}
Então em CustomCommand
eu uso Valuestore
exatamente da mesma maneira que em, MyJobName
mas no último não funciona. Conforme um dos comentários: Eu não faço $this->settings
global porque também não faço isso CustomCommand
e funciona bem aí.
Atualização 2
Se eu adicionar protegido $settings;
acima da __construct()
função conforme os comentários ainda não funciona, mesmo erro.
Se você usar JOB por QUEUE, você precisa de todas as solicitações ou consultas SQL a serem feitas pelo método handle
public function handle()
{
$this->settings = Valuestore::make(storage_path('app/settings.json'));
....
}
Porque o construtor funciona quando você faz o objeto da classe, e este objeto é serializado e armazenado no banco de dados e após a desserialização e o identificador é acionado.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras