FormElementSearchWidget   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
eloc 18
dl 0
loc 41
ccs 0
cts 18
cp 0
rs 10
c 0
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getHTML() 0 18 3
1
<?php
2
3
namespace Anax\HTMLForm;
4
5
/**
6
 * Form element
7
 */
8
class FormElementSearchWidget extends FormElement
9
{
10
    /**
11
     * Constructor
12
     *
13
     * @param string $name       of the element.
14
     * @param array  $attributes to set to the element. Default is an empty array.
15
     */
16
    public function __construct($name, $attributes = [])
17
    {
18
        parent::__construct($name, $attributes);
19
        $this['type'] = 'search-widget';
20
    }
21
22
23
24
    /**
25
     * Get HTML code for a element.
26
     *
27
     * @return string HTML code for the element.
28
     *
29
     * @SuppressWarnings(PHPMD.UnusedLocalVariable)
30
     */
31
    public function getHTML()
32
    {
33
        $details = $this->getHTMLDetails();
34
        extract($details);
0 ignored issues
show
Bug introduced by
$details of type Anax\HTMLForm\HTML is incompatible with the type array expected by parameter $var_array of extract(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

34
        extract(/** @scrutinizer ignore-type */ $details);
Loading history...
35
36
        $label = isset($this['label'])
37
            ? " value='{$this['label']}'"
38
            : null;
39
        $classSubmit = isset($this['class-submit'])
40
            ? " class='{$this['class-submit']}'"
41
            : null;
42
43
        return <<<EOD
0 ignored issues
show
Bug Best Practice introduced by
The expression return '<'.$wrapperEleme...'>'.$description.'</p>' returns the type string which is incompatible with the return type mandated by Anax\HTMLForm\FormElement::getHTML() of Anax\HTMLForm\HTML.

In the issue above, the returned value is violating the contract defined by the mentioned interface.

Let's take a look at an example:

interface HasName {
    /** @return string */
    public function getName();
}

class Name {
    public $name;
}

class User implements HasName {
    /** @return string|Name */
    public function getName() {
        return new Name('foo'); // This is a violation of the ``HasName`` interface
                                // which only allows a string value to be returned.
    }
}
Loading history...
44
<{$wrapperElement}{$wrapperClass}>
45
<input id='$id' type='search'{$class}{$name}{$value}{$autofocus}{$required}{$readonly}{$placeholder}/>
46
<input id='do-{$id}' type='submit'{$classSubmit}{$label}{$readonly}{$title}/>
47
</{$wrapperElement}>
48
<p class='cf-desc'>{$description}</p>
49
EOD;
50
    }
51
}
52