1: <?php
2: /*
3: * Copyright (c) 2016 @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: * ノードの生成を簡略化するための API を備えたヘルパーです.
32: * このインタフェースを使用することで,
33: * ノードの構築およびマークアップ出力の手間を省力化することができます.
34: */
35: interface Helper
36: {
37: /**
38: * 新しい HelperObject を生成します.
39: * このメソッドが返す HelperObject は, 引数の型に応じて以下のように振る舞います.
40: *
41: * - 文字列の場合: その文字列を要素名に持つ {@link Element}
42: * - null または空文字列の場合: 空の {@link NodeList}
43: * - Node オブジェクトの場合: その Node 自身
44: *
45: * 第 2 引数に配列を指定した場合, 生成された要素に対して属性をセットすることが出来ます.
46: * (生成された HelperObject が要素ではない場合, 第 2 引数は無視されます)
47: *
48: * @param string|Component $var
49: * @param array $attr
50: * @return HelperObject
51: */
52: public function tag($var, $attr = array());
53:
54: /**
55: * 指定された HelperObject を別の形式 (例えば HTML コードなど) に変換します.
56: *
57: * @param HelperObject $object 変換対象の HelperObject
58: * @return mixed 変換結果
59: */
60: public function write(HelperObject $object);
61:
62: /**
63: * 指定された要素名を持つ新しい Element オブジェクトを返します.
64: *
65: * @param string $name 要素名
66: * @return Element 指定された要素名を持つ Element
67: */
68: public function createElement($name);
69: }
70: