Skip to content

Commit c1decf1

Browse files
staabmsebastianbergmann
authored andcommitted
Unit: Move always available information into __construct()
Reducing the api surface along the way
1 parent 5058041 commit c1decf1

File tree

3 files changed

+68
-64
lines changed

3 files changed

+68
-64
lines changed

src/Report/Xml/Facade.php

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -182,20 +182,25 @@ private function processFile(FileNode $file, Directory $context): void
182182
private function processUnit(array $unit, Report $report): void
183183
{
184184
if (isset($unit['className'])) {
185-
$unitObject = $report->classObject($unit['className']);
185+
$unitObject = $report->classObject(
186+
$unit['className'],
187+
$unit['namespace'],
188+
$unit['startLine'],
189+
$unit['executableLines'],
190+
$unit['executedLines'],
191+
(float) $unit['crap'],
192+
);
186193
} else {
187-
$unitObject = $report->traitObject($unit['traitName']);
194+
$unitObject = $report->traitObject(
195+
$unit['traitName'],
196+
$unit['namespace'],
197+
$unit['startLine'],
198+
$unit['executableLines'],
199+
$unit['executedLines'],
200+
(float) $unit['crap'],
201+
);
188202
}
189203

190-
$unitObject->setLines(
191-
$unit['startLine'],
192-
$unit['executableLines'],
193-
$unit['executedLines'],
194-
);
195-
196-
$unitObject->setCrap((float) $unit['crap']);
197-
$unitObject->setNamespace($unit['namespace']);
198-
199204
foreach ($unit['methods'] as $method) {
200205
$methodObject = $unitObject->addMethod($method['methodName']);
201206
$methodObject->setSignature($method['signature']);

src/Report/Xml/Report.php

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,44 @@ public function functionObject(string $name): Method
5959
return new Method($node, $name);
6060
}
6161

62-
public function classObject(string $name): Unit
63-
{
64-
return $this->unitObject('class', $name);
62+
public function classObject(
63+
string $name,
64+
string $namespace,
65+
int $start,
66+
int $executable,
67+
int $executed,
68+
float $crap
69+
): Unit {
70+
$node = $this->contextNode()->appendChild(
71+
$this->dom()->createElementNS(
72+
Facade::XML_NAMESPACE,
73+
'class',
74+
),
75+
);
76+
77+
assert($node instanceof DOMElement);
78+
79+
return new Unit($node, $name, $namespace, $start, $executable, $executed, $crap);
6580
}
6681

67-
public function traitObject(string $name): Unit
68-
{
69-
return $this->unitObject('trait', $name);
82+
public function traitObject(
83+
string $name,
84+
string $namespace,
85+
int $start,
86+
int $executable,
87+
int $executed,
88+
float $crap
89+
): Unit {
90+
$node = $this->contextNode()->appendChild(
91+
$this->dom()->createElementNS(
92+
Facade::XML_NAMESPACE,
93+
'trait',
94+
),
95+
);
96+
97+
assert($node instanceof DOMElement);
98+
99+
return new Unit($node, $name, $namespace, $start, $executable, $executed, $crap);
70100
}
71101

72102
public function source(): Source
@@ -89,18 +119,4 @@ public function source(): Source
89119

90120
return new Source($source);
91121
}
92-
93-
private function unitObject(string $tagName, string $name): Unit
94-
{
95-
$node = $this->contextNode()->appendChild(
96-
$this->dom()->createElementNS(
97-
Facade::XML_NAMESPACE,
98-
$tagName,
99-
),
100-
);
101-
102-
assert($node instanceof DOMElement);
103-
104-
return new Unit($node, $name);
105-
}
106122
}

src/Report/Xml/Unit.php

Lines changed: 16 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -19,41 +19,29 @@
1919
{
2020
private DOMElement $contextNode;
2121

22-
public function __construct(DOMElement $context, string $name)
23-
{
22+
public function __construct(
23+
DOMElement $context,
24+
string $name,
25+
string $namespace,
26+
int $start,
27+
int $executable,
28+
int $executed,
29+
float $crap
30+
) {
2431
$this->contextNode = $context;
2532

26-
$this->setName($name);
27-
}
28-
29-
public function setLines(int $start, int $executable, int $executed): void
30-
{
33+
$this->contextNode->setAttribute('name', $name);
3134
$this->contextNode->setAttribute('start', (string) $start);
3235
$this->contextNode->setAttribute('executable', (string) $executable);
3336
$this->contextNode->setAttribute('executed', (string) $executed);
34-
}
35-
36-
public function setCrap(float $crap): void
37-
{
3837
$this->contextNode->setAttribute('crap', (string) $crap);
39-
}
40-
41-
public function setNamespace(string $namespace): void
42-
{
43-
$node = $this->contextNode->getElementsByTagNameNS(
44-
Facade::XML_NAMESPACE,
45-
'namespace',
46-
)->item(0);
47-
48-
if ($node === null) {
49-
$node = $this->contextNode->appendChild(
50-
$this->contextNode->ownerDocument->createElementNS(
51-
Facade::XML_NAMESPACE,
52-
'namespace',
53-
),
54-
);
55-
}
5638

39+
$node = $this->contextNode->appendChild(
40+
$this->contextNode->ownerDocument->createElementNS(
41+
Facade::XML_NAMESPACE,
42+
'namespace',
43+
),
44+
);
5745
assert($node instanceof DOMElement);
5846

5947
$node->setAttribute('name', $namespace);
@@ -72,9 +60,4 @@ public function addMethod(string $name): Method
7260

7361
return new Method($node, $name);
7462
}
75-
76-
private function setName(string $name): void
77-
{
78-
$this->contextNode->setAttribute('name', $name);
79-
}
8063
}

0 commit comments

Comments
 (0)