-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathJob.php
More file actions
52 lines (45 loc) · 1.16 KB
/
Job.php
File metadata and controls
52 lines (45 loc) · 1.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
/**
* Created by PhpStorm.
* User: beroberts
* Date: 1/14/17
* Time: 8:57 AM
*/
namespace WF\Hypernova;
class Job implements \JsonSerializable
{
public $name;
public $data;
public $metadata;
public function __construct($name, $data, $metadata = [])
{
$this->name = $name;
$this->data = $data;
$this->metadata = $metadata;
}
/**
* Factory to create from ['viewName' => ['name' => $name, 'data' => $data, 'metadata' => $metadata]]
*
* @param array $arr input array
*
* @return \WF\Hypernova\Job
* @throws \InvalidArgumentException
*/
public static function fromArray(array $arr)
{
if (empty($arr['name']) || !isset($arr['data'])) {
throw new \InvalidArgumentException('malformed job');
}
$metadata = isset($arr['metadata']) ? $arr['metadata'] : [];
return new static($arr['name'], $arr['data'], $metadata);
}
#[\ReturnTypeWillChange]
public function jsonSerialize()
{
return [
'name' => $this->name,
'data' => $this->data,
'metadata' => $this->metadata
];
}
}