123456789101112131415161718192021222324252627282930313233343536 |
- <?php
- namespace fec\component\redisqueue;
- use Yii;
- class Job
- {
- protected $queueObject;
- protected $payload;
- protected $queueName;
- public function __construct($queueObject, $payload, $queueName)
- {
- $this->queueObject = $queueObject;
- $this->payload = $payload;
- $this->queueName = $queueName;
- }
- public function run()
- {
- $this->resolveAndRun(json_decode($this->payload, true));
- }
- public function getQueueObject()
- {
- return $this->queueObject;
- }
- protected function resolveAndRun(array $payload)
- {
- list($class, $method) = $this->resolveJob($payload['job']);
- $instance = Yii::createObject([
- 'class' => $class
- ]);
- $instance->{$method}($this, $payload['data']);
- }
- protected function resolveJob($job)
- {
- $segments = explode('@', $job);
- return count($segments) > 1 ? $segments : array($segments[0], 'run');
- }
- }
|