Поскольку я довольно новичок в Laravel, я в настоящее время использую очередь и имею следующую проблему с работой.
Поскольку API, который я вызываю, может регулировать, мне нужно иметь эту логику для каждого метода, который я вызываю, поэтому я создал родительский (базовый) класс. (не уверен, что это правильный путь, пожалуйста, исправьте меня и здесь, если не так)
Итак, у меня есть JobClass
, расширяющий BaseJobClass
, который должен обрабатывать создание клиента API.
BaseJob
class BaseJob implements ShouldQueue
{
protected function performActionOrThrottle($method, $parameters, Customer $customer, Marketplace $marketplace) {
$client = $this->createClient($customer, $marketplace);
if (!method_exists($client, $method)) {
return $this->fail(new \Exception("Method {$method} does not exist in " . get_class($client)));
}
try {
$result = $client->{$method}($parameters);
} catch (\Exception $exception)
{
echo $exception->getMessage().PHP_EOL;
return $this->release(static::THROTTLE_LIMIT);
}
return $result;
}
}
Работа
class Job extends BaseJob
{
CONST THROTTLE_LIMIT = 60;
CONST RETRY_DELAY = 10;
private $customer;
private $requestId;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(Customer $customer, $requestId = null)
{
$this->customer = $customer;
$this->requestId = $requestId;
echo "Updating Inventory for {$customer->name}\n";
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$marketplace = Marketplace::findOrFail(5);
if (!$report = $this->performActionOrThrottle('GetReport', $this->requestId, $this->customer, $marketplace)) {
echo "Report not available, trying again in " . self::RETRY_DELAY;
return $this->release(self::RETRY_DELAY);
}
...
handle Data
...
return;
}
}
Чтобы завершить работу, мне нужно вернуть метод handle (). Как я могу вернуть метод handle из родительского метода, не проверяя возвращаемое значение и не осуществляя его возвращение? Если бы я это сделал, нет смысла иметь того родителя, который должен содержать всю логику, необходимую мне для нескольких заданий.