AbstractHandler   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 79
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 6
eloc 12
dl 0
loc 79
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A characters() 0 5 2
A startElement() 0 3 1
A endElement() 0 4 1
A finished() 0 2 1
1
<?php
2
3
/**
4
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
5
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
6
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
7
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
8
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
10
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
12
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
14
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15
 *
16
 * This software consists of voluntary contributions made by many individuals
17
 * and is licensed under the LGPL. For more information please see
18
 * <http://phing.info>.
19
 */
20
21
namespace Phing\Parser;
22
23
/**
24
 * This is an abstract class all SAX handler classes must extend.
25
 *
26
 * @author    Andreas Aderhold <[email protected]>
27
 * @copyright 2001,2002 THYRELL. All rights reserved
28
 */
29
abstract class AbstractHandler
30
{
31
    /**
32
     * @var AbstractHandler
33
     */
34
    public $parentHandler;
35
36
    /**
37
     * @var AbstractSAXParser
38
     */
39
    public $parser;
40
41
    /**
42
     * Constructs a SAX handler parser.
43
     *
44
     * The constructor must be called by all derived classes.
45
     *
46
     * @param ExpatParser     $parser        the parser object
47
     * @param AbstractHandler $parentHandler the parent handler of this handler
48
     */
49
    protected function __construct(AbstractSAXParser $parser, AbstractHandler $parentHandler)
50
    {
51
        $this->parentHandler = $parentHandler;
52
        $this->parser = $parser;
53
        $this->parser->setHandler($this);
54
    }
55
56
    /**
57
     * Gets invoked when a XML open tag occurs.
58
     *
59
     * Must be overloaded by the child class. Throws an ExpatParseException
60
     * if there is no handler registered for an element.
61
     *
62
     * @param string $name    name of the XML element
63
     * @param array  $attribs attributes of the XML element
64
     *
65
     * @throws ExpatParseException
66
     */
67
    public function startElement($name, $attribs)
0 ignored issues
show
Unused Code introduced by
The parameter $attribs is not used and could be removed. ( Ignorable by Annotation )

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

67
    public function startElement($name, /** @scrutinizer ignore-unused */ $attribs)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
68
    {
69
        throw new ExpatParseException("Unexpected element {$name}");
70
    }
71
72
    /**
73
     * Gets invoked when a XML element ends.
74
     *
75
     * Can be overloaded by the child class. But should not. It hands
76
     * over control to the parentHandler of this.
77
     *
78
     * @param string $name the name of the XML element
79
     */
80
    public function endElement($name)
0 ignored issues
show
Unused Code introduced by
The parameter $name is not used and could be removed. ( Ignorable by Annotation )

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

80
    public function endElement(/** @scrutinizer ignore-unused */ $name)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
81
    {
82
        $this->finished();
83
        $this->parser->setHandler($this->parentHandler);
84
    }
85
86
    /**
87
     * Invoked by occurrence of #PCDATA.
88
     *
89
     * @param string $data contents
90
     *
91
     * @throws ExpatParseException
92
     * @throws ExpatParseException if there is no CDATA but method
93
     *                             was called
94
     */
95
    public function characters($data)
96
    {
97
        $s = trim($data);
98
        if (strlen($s) > 0) {
99
            throw new ExpatParseException("Unexpected text '{$s}'", $this->parser->getLocation());
0 ignored issues
show
Bug introduced by
The method getLocation() does not exist on Phing\Parser\AbstractSAXParser. Since it exists in all sub-types, consider adding an abstract or default implementation to Phing\Parser\AbstractSAXParser. ( Ignorable by Annotation )

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

99
            throw new ExpatParseException("Unexpected text '{$s}'", $this->parser->/** @scrutinizer ignore-call */ getLocation());
Loading history...
100
        }
101
    }
102
103
    /**
104
     * Gets invoked when element closes method.
105
     */
106
    protected function finished()
107
    {
108
    }
109
}
110