InputLabelTrait::setForLabelAttr()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 2
nc 2
nop 0
dl 0
loc 5
rs 10
c 1
b 0
f 0
1
<?php
2
3
namespace Lagdo\UiBuilder\Component\Base\Traits;
4
5
use Lagdo\UiBuilder\Component\HtmlElement;
6
use Lagdo\UiBuilder\Component\Html\Html;
7
8
trait InputLabelTrait
9
{
10
    /**
11
     * @var HtmlElement|null
12
     */
13
    private HtmlElement|null $label = null;
14
15
    /**
16
     * @param string $label
17
     * @param array $attributes
18
     * @param bool $before
19
     *
20
     * @return static
21
     */
22
    public function label(string $label, array $attributes = [], bool $before = true): static
23
    {
24
        $this->label = $before ?
25
            $this->addSiblingPrev('label',  $attributes) :
0 ignored issues
show
Bug introduced by
It seems like addSiblingPrev() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

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

25
            $this->/** @scrutinizer ignore-call */ 
26
                   addSiblingPrev('label',  $attributes) :
Loading history...
26
            $this->addSiblingNext('label',  $attributes);
0 ignored issues
show
Bug introduced by
It seems like addSiblingNext() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

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

26
            $this->/** @scrutinizer ignore-call */ 
27
                   addSiblingNext('label',  $attributes);
Loading history...
27
        $this->label->addBaseClass('form-label');
0 ignored issues
show
Bug introduced by
The method addBaseClass() does not exist on null. ( Ignorable by Annotation )

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

27
        $this->label->/** @scrutinizer ignore-call */ 
28
                      addBaseClass('form-label');

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
28
        $this->label->addChild(new Html($label));
29
        return $this;
30
    }
31
32
    /**
33
     * @return void
34
     */
35
    protected function setForLabelAttr(): void
36
    {
37
        // Set the "for" attribute on the label, if it was created.
38
        if ($this->label !== null && $this->element()->hasAttribute('id')) {
0 ignored issues
show
Bug introduced by
It seems like element() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

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

38
        if ($this->label !== null && $this->/** @scrutinizer ignore-call */ element()->hasAttribute('id')) {
Loading history...
39
            $this->label->setAttribute('for', $this->element()->getAttribute('id'));
40
        }
41
    }
42
}
43