push(function () use ($url, $file) { * file_put_contents($file, file_get_contents($url)); * }); * ``` * * @author Roman Zhuravlev */ class Behavior extends \yii\base\Behavior { /** * @var Queue */ public $owner; /** * @inheritdoc */ public function events() { return [ Queue::EVENT_BEFORE_PUSH => 'beforePush', ]; } /** * Converts the closure to a job object. * @param PushEvent $event */ public function beforePush(PushEvent $event) { if ($event->job instanceof \Closure) { $serializer = new Serializer(); $serialized = $serializer->serialize($event->job); $event->job = new Job(); $event->job->serialized = $serialized; } } }