Passed
Push — main ( a17faf...5c49fb )
by Jean-Christophe
02:14
created

ReactComponent   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 1
Metric Value
wmc 3
eloc 6
c 2
b 0
f 1
dl 0
loc 29
ccs 9
cts 9
cp 1
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A addConstructor() 0 2 1
A addRender() 0 2 1
A __construct() 0 3 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 1
	public function __construct(string $name, ReactJS $react) {
21 1
		parent::__construct($name, 'React.Component');
22 1
		$this->react = $react;
23 1
	}
24
25
	/**
26
	 * Add the constructor.
27
	 *
28
	 * @param string $jsBody
29
	 *        	The Javascript code body
30
	 */
31 1
	public function addConstructor(string $jsBody): void {
32 1
		$this->addMethod('constructor', "\tsuper(props);\n" . $jsBody, 'props');
33 1
	}
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 1
	public function addRender(string $jsxHtml, string $jsInit = ''): void {
44 1
		$this->addMethod('render', $jsInit . ";return " . JSX::toJs($jsxHtml, $this->react) . ";");
45 1
	}
46
}
47
48