Completed
Push — master ( 5be53c...92f243 )
by Thomas
03:28
created

PhpTrait::fromReflection()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
namespace gossi\codegen\model;
3
4
use gossi\codegen\model\parts\PropertiesPart;
5
use gossi\codegen\model\parts\TraitsPart;
6
use gossi\codegen\parser\FileParser;
7
use gossi\codegen\parser\visitor\ConstantParserVisitor;
8
use gossi\codegen\parser\visitor\MethodParserVisitor;
9
use gossi\codegen\parser\visitor\PropertyParserVisitor;
10
use gossi\codegen\parser\visitor\TraitParserVisitor;
11
12
/**
13
 * Represents a PHP trait.
14
 *
15
 * @author Thomas Gossmann
16
 */
17
class PhpTrait extends AbstractPhpStruct implements GenerateableInterface, TraitsInterface, PropertiesInterface {
18
19
	use PropertiesPart;
20
	use TraitsPart;
21
22
	/**
23
	 * Creates a PHP trait from a file
24
	 *
25
	 * @param string $filename
26
	 * @return PhpTrait
27
	 */
28 1
	public static function fromFile($filename) {
29 1
		$trait = new PhpTrait();
30 1
		$parser = new FileParser($filename);
31 1
		$parser->addVisitor(new TraitParserVisitor($trait));
32 1
		$parser->addVisitor(new MethodParserVisitor($trait));
33 1
		$parser->addVisitor(new ConstantParserVisitor($trait));
34 1
		$parser->addVisitor(new PropertyParserVisitor($trait));
35 1
		$parser->parse();
36
		
37 1
		return $trait;
38
	}
39
40
	/**
41
	 * Creates a new PHP trait
42
	 *
43
	 * @param string $name qualified name
44
	 */
45 7
	public function __construct($name = null) {
46 7
		parent::__construct($name);
47 7
		$this->initProperties();
48 7
	}
49
50
	/**
51
	 * @inheritDoc
52
	 */
53 3
	public function generateDocblock() {
54 3
		parent::generateDocblock();
55
56 3
		foreach ($this->properties as $prop) {
57 2
			$prop->generateDocblock();
58 3
		}
59 3
	}
60
}
61