Passed
Push — main ( faf76d...59f012 )
by Jean-Christophe
02:21
created

ReactComponent::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 3
ccs 3
cts 3
cp 1
rs 10
cc 1
nc 1
nop 2
crap 1
1
<?php
2
namespace PHPMV\react;
3
4
use PHPMV\core\ReactClass;
5
use PHPMV\utils\JSX;
6
7
/**
8
 * A React component generator.
9
 * PHPMV\react$ReactComponent
10
 * This class is part of php-react
11
 *
12
 * @author jc
13
 * @version 1.0.0
14
 *
15
 */
16
class ReactComponent extends ReactClass {
17
18
	private $react;
19
20 3
	public function __construct(string $name, ReactJS $react) {
21 3
		parent::__construct($name, 'React.Component');
22 3
		$this->react = $react;
23 3
	}
24
25
	/**
26
	 * Add the constructor.
27
	 *
28
	 * @param string $jsBody
29
	 *        	The Javascript code body
30
	 */
31 2
	public function addConstructor(string $jsBody): void {
32 2
		$this->addMethod('constructor', "\tsuper(props);\n" . $jsBody, 'props');
33 2
	}
34
35
	/**
36
	 * Add the render method.
37
	 *
38
	 * @param string $jsxHtml
39
	 *        	The JSX code to render
40
	 * @param string $jsInit
41
	 *        	Javascript code intialization before render
42
	 */
43 3
	public function addRender(string $jsxHtml, string $jsInit = ''): void {
44 3
		$this->addMethod('render', $jsInit . ";return " . JSX::toJs($jsxHtml, $this->react) . ";");
45 3
	}
46
47
	/**
48
	 * Add the componentDidMount method.
49
	 *
50
	 * @param string $jsBody
51
	 *        	The Javascript code body
52
	 */
53
	public function onComponentDidMount(string $jsBody): void {
54
		$this->addMethod('componentDidMount', $jsBody);
55
	}
56
57
	/**
58
	 * Add the componentWillUnmount method.
59
	 *
60
	 * @param string $jsBody
61
	 *        	The Javascript code body
62
	 */
63
	public function onComponentWillUnmount(string $jsBody): void {
64
		$this->addMethod('componentWillUnmount', $jsBody);
65
	}
66
67
	public function setState(array $states) {}
68
}
69
70