1: <?php
2: /*
3: * Copyright (c) 2014 @trashtoy
4: * https://github.com/trashtoy/
5: *
6: * Permission is hereby granted, free of charge, to any person obtaining a copy of
7: * this software and associated documentation files (the "Software"), to deal in
8: * the Software without restriction, including without limitation the rights to use,
9: * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
10: * Software, and to permit persons to whom the Software is furnished to do so,
11: * subject to the following conditions:
12: *
13: * The above copyright notice and this permission notice shall be included in all
14: * copies or substantial portions of the Software.
15: *
16: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
18: * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
19: * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
20: * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21: * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22: */
23: /**
24: * PHP class file.
25: * @auhtor trashtoy
26: * @since 2.0.0
27: */
28: namespace Peach\Markup;
29:
30: /**
31: * 「何もない」ことをあらわす Component です. (Null Object パターン)
32: *
33: * この Component は以下の特徴を持ちます.
34: *
35: * - コンテナに append しても何も追加されない
36: * - Context に処理させても何も行われない (ただし DebugContext を除く)
37: */
38: class None implements Component
39: {
40: /**
41: * このクラスはインスタンス化できません.
42: */
43: private function __construct() {}
44:
45: /**
46: * このクラスの唯一のインスタンスを返します.
47: * @return None
48: * @codeCoverageIgnore
49: */
50: public static function getInstance()
51: {
52: static $instance = null;
53: if ($instance === null) {
54: $instance = new self();
55: }
56:
57: return $instance;
58: }
59:
60: /**
61: * 指定された Context にこのノードを処理させます.
62: * {@link Context::handleNone()} を呼び出します.
63: * @param Context $context
64: */
65: public function accept(Context $context)
66: {
67: $context->handleNone($this);
68: }
69:
70: /**
71: * 空の NodeList を返します.
72: *
73: * @return Component 空の NodeList
74: */
75: public function getAppendee()
76: {
77: return new NodeList();
78: }
79: }
80: