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: * ノードを内部に含めることが出来るインタフェースです.
32: * このインタフェースを実装したクラスに
33: * {@link NodeList} や {@link ContainerElement} などがあります.
34: */
35: interface Container extends Component
36: {
37: /**
38: * このコンテナにノードを追加します.
39: *
40: * このメソッドは, 引数の種類によって以下の挙動を取ります.
41: *
42: * - {@link Node} の場合, 引数をそのままこの Container に追加します.
43: * - {@link Container} でかつ Node ではない場合, 引数の Container に含まれるノードを追加します. (引数の Container 自身は追加されません)
44: * - 配列の場合, 配列に含まれる各ノードをこの Container に追加します.
45: * - 以上の条件に合致しない場合は, 引数の文字列表現を {@link Text} ノードに変換し, この Container に追加します.
46: *
47: * @param Node|Container|array|string $var
48: */
49: public function appendNode($var);
50:
51: /**
52: * このコンテナの子ノードの一覧を
53: * {@link Node} オブジェクトの配列として返します.
54: *
55: * @return array
56: */
57: public function getChildNodes();
58: }
59: