Code Duplication    Length = 365-377 lines in 2 locations

src/voku/helper/SimpleHtmlDomBlank.php 1 location

@@ 8-372 (lines=365) @@
5
namespace voku\helper;
6
7
/** @noinspection PhpHierarchyChecksInspection */
8
class SimpleHtmlDomBlank extends AbstractSimpleHtmlDom implements \IteratorAggregate, SimpleHtmlDomInterface
9
{
10
    /**
11
     * @param string $name
12
     * @param array  $arguments
13
     *
14
     * @throws \BadMethodCallException
15
     *
16
     * @return SimpleHtmlDomInterface|string|null
17
     */
18
    public function __call($name, $arguments)
19
    {
20
        $name = \strtolower($name);
21
22
        if (isset(self::$functionAliases[$name])) {
23
            return \call_user_func_array([$this, self::$functionAliases[$name]], $arguments);
24
        }
25
26
        throw new \BadMethodCallException('Method does not exist');
27
    }
28
29
    /**
30
     * Find list of nodes with a CSS selector.
31
     *
32
     * @param string   $selector
33
     * @param int|null $idx
34
     *
35
     * @return SimpleHtmlDomNodeInterface
36
     */
37
    public function find(string $selector, $idx = null)
38
    {
39
        return new SimpleHtmlDomNodeBlank();
40
    }
41
42
    /**
43
     * Returns an array of attributes.
44
     *
45
     * @return null
46
     */
47
    public function getAllAttributes()
48
    {
49
        return null;
50
    }
51
52
    /**
53
     * Return attribute value.
54
     *
55
     * @param string $name
56
     *
57
     * @return string
58
     */
59
    public function getAttribute(string $name): string
60
    {
61
        return '';
62
    }
63
64
    /**
65
     * Determine if an attribute exists on the element.
66
     *
67
     * @param string $name
68
     *
69
     * @return bool
70
     */
71
    public function hasAttribute(string $name): bool
72
    {
73
        return false;
74
    }
75
76
    /**
77
     * Get dom node's outer html.
78
     *
79
     * @param bool $multiDecodeNewHtmlEntity
80
     *
81
     * @return string
82
     */
83
    public function html(bool $multiDecodeNewHtmlEntity = false): string
84
    {
85
        return '';
86
    }
87
88
    /**
89
     * Get dom node's inner html.
90
     *
91
     * @param bool $multiDecodeNewHtmlEntity
92
     *
93
     * @return string
94
     */
95
    public function innerHtml(bool $multiDecodeNewHtmlEntity = false): string
96
    {
97
        return '';
98
    }
99
100
    /**
101
     * Remove attribute.
102
     *
103
     * @param string $name <p>The name of the html-attribute.</p>
104
     *
105
     * @return SimpleHtmlDomInterface
106
     */
107
    public function removeAttribute(string $name): SimpleHtmlDomInterface
108
    {
109
        return $this;
110
    }
111
112
    protected function replaceChildWithString(string $string): SimpleHtmlDomInterface
113
    {
114
        return new static();
115
    }
116
117
    protected function replaceNodeWithString(string $string): SimpleHtmlDomInterface
118
    {
119
        return new static();
120
    }
121
122
    protected function replaceTextWithString($string): SimpleHtmlDomInterface
123
    {
124
        return new static();
125
    }
126
127
    /**
128
     * Set attribute value.
129
     *
130
     * @param string      $name       <p>The name of the html-attribute.</p>
131
     * @param string|null $value      <p>Set to NULL or empty string, to remove the attribute.</p>
132
     * @param bool        $strict     </p>
133
     *                                $value must be NULL, to remove the attribute,
134
     *                                so that you can set an empty string as attribute-value e.g. autofocus=""
135
     *                                </p>
136
     *
137
     * @return SimpleHtmlDomInterface
138
     */
139
    public function setAttribute(string $name, $value = null, bool $strict = false): SimpleHtmlDomInterface
140
    {
141
        return $this;
142
    }
143
144
    /**
145
     * Get dom node's plain text.
146
     *
147
     * @return string
148
     */
149
    public function text(): string
150
    {
151
        return '';
152
    }
153
154
    /**
155
     * Returns children of node.
156
     *
157
     * @param int $idx
158
     *
159
     * @return null
160
     */
161
    public function childNodes(int $idx = -1)
162
    {
163
        return null;
164
    }
165
166
    /**
167
     * Find nodes with a CSS selector.
168
     *
169
     * @param string $selector
170
     *
171
     * @return SimpleHtmlDomNodeInterface
172
     */
173
    public function findMulti(string $selector): SimpleHtmlDomNodeInterface
174
    {
175
        return new SimpleHtmlDomNodeBlank();
176
    }
177
178
    /**
179
     * Find one node with a CSS selector.
180
     *
181
     * @param string $selector
182
     *
183
     * @return SimpleHtmlDomInterface
184
     */
185
    public function findOne(string $selector): SimpleHtmlDomInterface
186
    {
187
        return new static();
188
    }
189
190
    /**
191
     * Returns the first child of node.
192
     *
193
     * @return null
194
     */
195
    public function firstChild()
196
    {
197
        return null;
198
    }
199
200
    /**
201
     * Return elements by .class.
202
     *
203
     * @param string $class
204
     *
205
     * @return SimpleHtmlDomNodeInterface
206
     */
207
    public function getElementByClass(string $class): SimpleHtmlDomNodeInterface
208
    {
209
        return new SimpleHtmlDomNodeBlank();
210
    }
211
212
    /**
213
     * Return element by #id.
214
     *
215
     * @param string $id
216
     *
217
     * @return SimpleHtmlDomInterface
218
     */
219
    public function getElementById(string $id): SimpleHtmlDomInterface
220
    {
221
        return new static();
222
    }
223
224
    /**
225
     * Return element by tag name.
226
     *
227
     * @param string $name
228
     *
229
     * @return SimpleHtmlDomInterface
230
     */
231
    public function getElementByTagName(string $name): SimpleHtmlDomInterface
232
    {
233
        return new static();
234
    }
235
236
    /**
237
     * Returns elements by #id.
238
     *
239
     * @param string   $id
240
     * @param int|null $idx
241
     *
242
     * @return SimpleHtmlDomNodeInterface
243
     */
244
    public function getElementsById(string $id, $idx = null)
245
    {
246
        return new SimpleHtmlDomNodeBlank();
247
    }
248
249
    /**
250
     * Returns elements by tag name.
251
     *
252
     * @param string   $name
253
     * @param int|null $idx
254
     *
255
     * @return SimpleHtmlDomNodeInterface
256
     */
257
    public function getElementsByTagName(string $name, $idx = null)
258
    {
259
        return new SimpleHtmlDomNodeBlank();
260
    }
261
262
    /**
263
     * Create a new "HtmlDomParser"-object from the current context.
264
     *
265
     * @return HtmlDomParser
266
     */
267
    public function getHtmlDomParser(): HtmlDomParser
268
    {
269
        return new HtmlDomParser($this);
270
    }
271
272
    /**
273
     * @return \DOMNode
274
     */
275
    public function getNode(): \DOMNode
276
    {
277
        return new \DOMNode();
278
    }
279
280
    /**
281
     * Nodes can get partially destroyed in which they're still an
282
     * actual DOM node (such as \DOMElement) but almost their entire
283
     * body is gone, including the `nodeType` attribute.
284
     *
285
     * @return bool true if node has been destroyed
286
     */
287
    public function isRemoved(): bool
288
    {
289
        return true;
290
    }
291
292
    /**
293
     * Returns the last child of node.
294
     *
295
     * @return null
296
     */
297
    public function lastChild()
298
    {
299
        return null;
300
    }
301
302
    /**
303
     * Returns the next sibling of node.
304
     *
305
     * @return null
306
     */
307
    public function nextSibling()
308
    {
309
        return null;
310
    }
311
312
    /**
313
     * Returns the parent of node.
314
     *
315
     * @return SimpleHtmlDomInterface
316
     */
317
    public function parentNode(): SimpleHtmlDomInterface
318
    {
319
        return new static();
320
    }
321
322
    /**
323
     * Returns the previous sibling of node.
324
     *
325
     * @return null
326
     */
327
    public function previousSibling()
328
    {
329
        return null;
330
    }
331
332
    /**
333
     * @param string|string[]|null $value <p>
334
     *                                    null === get the current input value
335
     *                                    text === set a new input value
336
     *                                    </p>
337
     *
338
     * @return string|string[]|null
339
     */
340
    public function val($value = null)
341
    {
342
        return null;
343
    }
344
345
    /**
346
     * Retrieve an external iterator.
347
     *
348
     * @see  http://php.net/manual/en/iteratoraggregate.getiterator.php
349
     *
350
     * @return SimpleHtmlDomNodeInterface
351
     *                           <p>
352
     *                              An instance of an object implementing <b>Iterator</b> or
353
     *                              <b>Traversable</b>
354
     *                           </p>
355
     */
356
    public function getIterator(): SimpleHtmlDomNodeInterface
357
    {
358
        return new SimpleHtmlDomNodeBlank();
359
    }
360
361
    /**
362
     * Get dom node's inner xml.
363
     *
364
     * @param bool $multiDecodeNewHtmlEntity
365
     *
366
     * @return string
367
     */
368
    public function innerXml(bool $multiDecodeNewHtmlEntity = false): string
369
    {
370
        return '';
371
    }
372
}
373

src/voku/helper/SimpleXmlDomBlank.php 1 location

@@ 8-384 (lines=377) @@
5
namespace voku\helper;
6
7
/** @noinspection PhpHierarchyChecksInspection */
8
class SimpleXmlDomBlank extends AbstractSimpleXmlDom implements \IteratorAggregate, SimpleXmlDomInterface
9
{
10
    /**
11
     * @param string $name
12
     * @param array  $arguments
13
     *
14
     * @throws \BadMethodCallException
15
     *
16
     * @return SimpleXmlDomInterface|string|null
17
     */
18
    public function __call($name, $arguments)
19
    {
20
        $name = \strtolower($name);
21
22
        if (isset(self::$functionAliases[$name])) {
23
            return \call_user_func_array([$this, self::$functionAliases[$name]], $arguments);
24
        }
25
26
        throw new \BadMethodCallException('Method does not exist');
27
    }
28
29
    /**
30
     * Find list of nodes with a CSS selector.
31
     *
32
     * @param string   $selector
33
     * @param int|null $idx
34
     *
35
     * @return SimpleXmlDomNodeInterface
36
     */
37
    public function find(string $selector, $idx = null)
38
    {
39
        return new SimpleXmlDomNodeBlank();
40
    }
41
42
    /**
43
     * Returns an array of attributes.
44
     *
45
     * @return null
46
     */
47
    public function getAllAttributes()
48
    {
49
        return null;
50
    }
51
52
    /**
53
     * Return attribute value.
54
     *
55
     * @param string $name
56
     *
57
     * @return string
58
     */
59
    public function getAttribute(string $name): string
60
    {
61
        return '';
62
    }
63
64
    /**
65
     * Determine if an attribute exists on the element.
66
     *
67
     * @param string $name
68
     *
69
     * @return bool
70
     */
71
    public function hasAttribute(string $name): bool
72
    {
73
        return false;
74
    }
75
76
    /**
77
     * Get dom node's inner xml.
78
     *
79
     * @param bool $multiDecodeNewHtmlEntity
80
     *
81
     * @return string
82
     */
83
    public function innerXml(bool $multiDecodeNewHtmlEntity = false): string
84
    {
85
        return '';
86
    }
87
88
    /**
89
     * Remove attribute.
90
     *
91
     * @param string $name <p>The name of the html-attribute.</p>
92
     *
93
     * @return SimpleXmlDomInterface
94
     */
95
    public function removeAttribute(string $name): SimpleXmlDomInterface
96
    {
97
        return $this;
98
    }
99
100
    protected function replaceChildWithString(string $string): SimpleXmlDomInterface
101
    {
102
        return new static();
103
    }
104
105
    protected function replaceNodeWithString(string $string): SimpleXmlDomInterface
106
    {
107
        return new static();
108
    }
109
110
    protected function replaceTextWithString($string): SimpleXmlDomInterface
111
    {
112
        return new static();
113
    }
114
115
    /**
116
     * Set attribute value.
117
     *
118
     * @param string      $name       <p>The name of the html-attribute.</p>
119
     * @param string|null $value      <p>Set to NULL or empty string, to remove the attribute.</p>
120
     * @param bool        $strict     </p>
121
     *                                $value must be NULL, to remove the attribute,
122
     *                                so that you can set an empty string as attribute-value e.g. autofocus=""
123
     *                                </p>
124
     *
125
     * @return SimpleXmlDomInterface
126
     */
127
    public function setAttribute(string $name, $value = null, bool $strict = false): SimpleXmlDomInterface
128
    {
129
        return $this;
130
    }
131
132
    /**
133
     * Get dom node's plain text.
134
     *
135
     * @return string
136
     */
137
    public function text(): string
138
    {
139
        return '';
140
    }
141
142
    /**
143
     * Get dom node's outer html.
144
     *
145
     * @param bool $multiDecodeNewHtmlEntity
146
     *
147
     * @return string
148
     */
149
    public function xml(bool $multiDecodeNewHtmlEntity = false): string
150
    {
151
        return '';
152
    }
153
154
    /**
155
     * Returns children of node.
156
     *
157
     * @param int $idx
158
     *
159
     * @return null
160
     */
161
    public function childNodes(int $idx = -1)
162
    {
163
        return null;
164
    }
165
166
    /**
167
     * Find nodes with a CSS selector.
168
     *
169
     * @param string $selector
170
     *
171
     * @return SimpleXmlDomNodeInterface
172
     */
173
    public function findMulti(string $selector): SimpleXmlDomNodeInterface
174
    {
175
        return new SimpleXmlDomNodeBlank();
176
    }
177
178
    /**
179
     * Find one node with a CSS selector.
180
     *
181
     * @param string $selector
182
     *
183
     * @return SimpleXmlDomInterface
184
     */
185
    public function findOne(string $selector): SimpleXmlDomInterface
186
    {
187
        return new static();
188
    }
189
190
    /**
191
     * Returns the first child of node.
192
     *
193
     * @return null
194
     */
195
    public function firstChild()
196
    {
197
        return null;
198
    }
199
200
    /**
201
     * Return elements by .class.
202
     *
203
     * @param string $class
204
     *
205
     * @return SimpleXmlDomNodeInterface
206
     */
207
    public function getElementByClass(string $class): SimpleXmlDomNodeInterface
208
    {
209
        return new SimpleXmlDomNodeBlank();
210
    }
211
212
    /**
213
     * Return element by #id.
214
     *
215
     * @param string $id
216
     *
217
     * @return SimpleXmlDomInterface
218
     */
219
    public function getElementById(string $id): SimpleXmlDomInterface
220
    {
221
        return new static();
222
    }
223
224
    /**
225
     * Return element by tag name.
226
     *
227
     * @param string $name
228
     *
229
     * @return SimpleXmlDomInterface
230
     */
231
    public function getElementByTagName(string $name): SimpleXmlDomInterface
232
    {
233
        return new static();
234
    }
235
236
    /**
237
     * Returns elements by #id.
238
     *
239
     * @param string   $id
240
     * @param int|null $idx
241
     *
242
     * @return SimpleXmlDomNodeInterface
243
     */
244
    public function getElementsById(string $id, $idx = null)
245
    {
246
        return new SimpleXmlDomNodeBlank();
247
    }
248
249
    /**
250
     * Returns elements by tag name.
251
     *
252
     * @param string   $name
253
     * @param int|null $idx
254
     *
255
     * @return SimpleXmlDomNodeInterface
256
     */
257
    public function getElementsByTagName(string $name, $idx = null)
258
    {
259
        return new SimpleXmlDomNodeBlank();
260
    }
261
262
    /**
263
     * @return \DOMNode
264
     */
265
    public function getNode(): \DOMNode
266
    {
267
        return new \DOMNode();
268
    }
269
270
    /**
271
     * Create a new "XmlDomParser"-object from the current context.
272
     *
273
     * @return XmlDomParser
274
     */
275
    public function getXmlDomParser(): XmlDomParser
276
    {
277
        return new XmlDomParser($this);
278
    }
279
280
    /**
281
     * Get dom node's inner html.
282
     *
283
     * @param bool $multiDecodeNewHtmlEntity
284
     *
285
     * @return string
286
     */
287
    public function innerHtml(bool $multiDecodeNewHtmlEntity = false): string
288
    {
289
        return '';
290
    }
291
292
    /**
293
     * Nodes can get partially destroyed in which they're still an
294
     * actual DOM node (such as \DOMElement) but almost their entire
295
     * body is gone, including the `nodeType` attribute.
296
     *
297
     * @return bool true if node has been destroyed
298
     */
299
    public function isRemoved(): bool
300
    {
301
        return true;
302
    }
303
304
    /**
305
     * Returns the last child of node.
306
     *
307
     * @return null
308
     */
309
    public function lastChild()
310
    {
311
        return null;
312
    }
313
314
    /**
315
     * Returns the next sibling of node.
316
     *
317
     * @return null
318
     */
319
    public function nextSibling()
320
    {
321
        return null;
322
    }
323
324
    /**
325
     * Returns the parent of node.
326
     *
327
     * @return SimpleXmlDomInterface
328
     */
329
    public function parentNode(): SimpleXmlDomInterface
330
    {
331
        return new static();
332
    }
333
334
    /**
335
     * Returns the previous sibling of node.
336
     *
337
     * @return null
338
     */
339
    public function previousSibling()
340
    {
341
        return null;
342
    }
343
344
    /**
345
     * @param string|string[]|null $value <p>
346
     *                                    null === get the current input value
347
     *                                    text === set a new input value
348
     *                                    </p>
349
     *
350
     * @return string|string[]|null
351
     */
352
    public function val($value = null)
353
    {
354
        return null;
355
    }
356
357
    /**
358
     * Retrieve an external iterator.
359
     *
360
     * @see  http://php.net/manual/en/iteratoraggregate.getiterator.php
361
     *
362
     * @return SimpleXmlDomNodeInterface
363
     *                           <p>
364
     *                              An instance of an object implementing <b>Iterator</b> or
365
     *                              <b>Traversable</b>
366
     *                           </p>
367
     */
368
    public function getIterator(): SimpleXmlDomNodeInterface
369
    {
370
        return new SimpleXmlDomNodeBlank();
371
    }
372
373
    /**
374
     * Get dom node's outer html.
375
     *
376
     * @param bool $multiDecodeNewHtmlEntity
377
     *
378
     * @return string
379
     */
380
    public function html(bool $multiDecodeNewHtmlEntity = false): string
381
    {
382
        return '';
383
    }
384
}
385