AtomicOperationsDocument::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 3
c 1
b 0
f 1
nc 1
nop 0
dl 0
loc 5
ccs 4
cts 4
cp 1
crap 1
rs 10
1
<?php
2
3
namespace alsvanzelf\jsonapi\extensions;
4
5
use alsvanzelf\jsonapi\Document;
6
use alsvanzelf\jsonapi\extensions\AtomicOperationsExtension;
7
use alsvanzelf\jsonapi\interfaces\DocumentInterface;
8
use alsvanzelf\jsonapi\interfaces\ResourceInterface;
9
10
/**
11
 * document to send results of an atomic operations API
12
 */
13
class AtomicOperationsDocument extends Document {
14
	/** @var AtomicOperationsExtension */
15
	private $extension;
16
	/** @var ResourceInterface[] */
17
	private $results = [];
18
	
19
	/**
20
	 * start the document, auto applies the extension
21
	 */
22 2
	public function __construct() {
23 2
		parent::__construct();
24
		
25 2
		$this->extension = new AtomicOperationsExtension();
26 2
		$this->applyExtension($this->extension);
27
	}
28
	
29
	/**
30
	 * add resources as results of the operations
31
	 * 
32
	 * @param ResourceInterface[] ...$resources
33
	 */
34 1
	public function addResults(ResourceInterface ...$resources) {
35 1
		$this->results = array_merge($this->results, $resources);
36
	}
37
	
38
	/**
39
	 * DocumentInterface
40
	 */
41
	
42
	/**
43
	 * @inheritDoc
44
	 */
45 2
	public function toArray() {
46 2
		$results = [];
47 2
		foreach ($this->results as $result) {
48 1
			$results[] = [
49 1
				'data' => $result->getResource()->toArray(),
50
			];
51
		}
52
		
53 2
		$this->addExtensionMember($this->extension, 'results', $results);
54
		
55 2
		return parent::toArray();
56
	}
57
}
58