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.2.0
27: */
28: namespace Peach\Markup;
29:
30: /**
31: * HTML や RSS など, 特定のマークアップ言語に特化した Helper
32: * クラスを新たに実装する際に利用するスケルトン実装です.
33: *
34: * このクラスおよびその具象クラスは Decorator パターンで実装されています.
35: */
36: abstract class AbstractHelper implements Helper
37: {
38: /**
39: * このオブジェクトに設定されているベースの Helper オブジェクトです.
40: * Helper インタフェースで定義されている各種メソッドの実際の処理をこのメンバ変数に移譲しています.
41: *
42: * @var Helper
43: */
44: private $parent;
45:
46: /**
47: * 指定された Helper オブジェクトをベースとして, 新しいインスタンスを生成します.
48: *
49: * @param Helper $parent ベースの Helper オブジェクト
50: */
51: public function __construct(Helper $parent)
52: {
53: $this->parent = $parent;
54: }
55:
56: /**
57: * このオブジェクトに設定されているベースの Helper オブジェクトを返します.
58: *
59: * @return Helper ベースの Helper オブジェクト
60: */
61: public function getParentHelper()
62: {
63: return $this->parent;
64: }
65:
66: /**
67: * ベースの Helper オブジェクトの createElement() を実行します.
68: *
69: * @param string $name 要素名
70: * @return Element 指定された要素名を持つ Element
71: */
72: public function createElement($name)
73: {
74: return $this->parent->createElement($name);
75: }
76:
77: /**
78: * ベースの Helper オブジェクトの tag() メソッドの結果をそのまま返します.
79: *
80: * @param string|Component $var
81: * @param array $attr
82: * @return HelperObject
83: */
84: public function tag($var, $attr = array())
85: {
86: return $this->parent->tag($var, $attr);
87: }
88:
89: /**
90: * ベースの Helper オブジェクトの write() メソッドの結果をそのまま返します.
91: *
92: * @param HelperObject $object
93: * @return mixed
94: */
95: public function write(HelperObject $object)
96: {
97: return $this->parent->write($object);
98: }
99: }
100: