Passed
Push — master ( a5d107...2f330a )
by Daniel
02:29
created

JobFactory::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 6
rs 10
cc 1
nc 1
nop 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Jellyfish\Scheduler;
6
7
use Cron\CronExpression;
8
use DateTime;
9
use Jellyfish\Process\ProcessFactoryInterface;
10
use Jellyfish\Process\ProcessInterface;
11
12
class JobFactory implements JobFactoryInterface
13
{
14
    /**
15
     * @var \Jellyfish\Process\ProcessFactoryInterface
16
     */
17
    protected $processFactory;
18
19
    /**
20
     * @var \Jellyfish\Scheduler\CronExpressionFactoryInterface
21
     */
22
    protected $cronExpressionFactory;
23
24
    /**
25
     * JobFactory constructor.
26
     *
27
     * @param  \Jellyfish\Process\ProcessFactoryInterface  $processFactory
28
     * @param  \Jellyfish\Scheduler\CronExpressionFactoryInterface  $cronExpressionFactory
29
     */
30
    public function __construct(
31
        ProcessFactoryInterface $processFactory,
32
        CronExpressionFactoryInterface $cronExpressionFactory
33
    ) {
34
        $this->processFactory = $processFactory;
35
        $this->cronExpressionFactory = $cronExpressionFactory;
36
    }
37
38
    /**
39
     * @param  array  $command
40
     * @param  string  $cronExpression
41
     *
42
     * @return \Jellyfish\Scheduler\JobInterface
43
     */
44
    public function create(array $command, string $cronExpression): JobInterface
45
    {
46
        return new Job($this->createProcess($command), $this->createExpression($cronExpression));
47
    }
48
49
    /**
50
     * @param  string  $expression
51
     *
52
     * @return \Cron\CronExpression
53
     */
54
    protected function createExpression(string $expression): CronExpression
55
    {
56
        return $this->cronExpressionFactory->create($expression);
57
    }
58
59
    /**
60
     * @param  array  $command
61
     *
62
     * @return \Jellyfish\Process\ProcessInterface
63
     */
64
    protected function createProcess(array $command): ProcessInterface
65
    {
66
        return $this->processFactory->create($command);
67
    }
68
}
69