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\DT;
29:
30: /**
31: * 既存の Format オブジェクトを機能拡張するためのラッパークラスです.
32: * このクラスは Decorator パターンで設計されています.
33: */
34: class FormatWrapper implements Format
35: {
36: /**
37: * ラップする Format オブジェクトです.
38: * @var Format
39: */
40: private $original;
41:
42: /**
43: * 指定された Format オブジェクトをラップする FormatWrapper を構築します.
44: * @param Format $original ラップ対象のオブジェクト
45: */
46: public function __construct(Format $original)
47: {
48: $this->original = $original;
49: }
50:
51: /**
52: * ラップ対象の Format オブジェクトを返します.
53: * @return Format ラップ対象のオブジェクト
54: */
55: public function getOriginal()
56: {
57: return $this->original;
58: }
59:
60: /**
61: * ラップ対象のオブジェクトの formatDate メソッドを実行します.
62: * @param Date $d 書式化対象の時間オブジェクト
63: * @return string オリジナルの formatDate の結果
64: */
65: public function formatDate(Date $d)
66: {
67: return $this->original->formatDate($d);
68: }
69:
70: /**
71: * ラップ対象のオブジェクトの formatDatetime メソッドを実行します.
72: * @param Datetime $d 書式化対象の時間オブジェクト
73: * @return string オリジナルの formatDatetime の結果
74: */
75: public function formatDatetime(Datetime $d)
76: {
77: return $this->original->formatDatetime($d);
78: }
79:
80: /**
81: * ラップ対象のオブジェクトの formatTimestamp メソッドを実行します.
82: * @param Timestamp $d 書式化対象の時間オブジェクト
83: * @return string オリジナルの formatTimestamp の結果
84: */
85: public function formatTimestamp(Timestamp $d)
86: {
87: return $this->original->formatTimestamp($d);
88: }
89:
90: /**
91: * ラップ対象のオブジェクトの parseDate メソッドを実行します.
92: * @param string $format 解析対象の文字列
93: * @return Time オリジナルの parseDate の結果
94: */
95: public function parseDate($format)
96: {
97: return $this->original->parseDate($format);
98: }
99:
100: /**
101: * ラップ対象のオブジェクトの parseDatetime メソッドを実行します.
102: * @param string $format 解析対象の文字列
103: * @return Time オリジナルの parseDatetime の結果
104: */
105: public function parseDatetime($format)
106: {
107: return $this->original->parseDatetime($format);
108: }
109:
110: /**
111: * ラップ対象のオブジェクトの parseTimestamp メソッドを実行します.
112: * @param string $format 解析対象の文字列
113: * @return Time オリジナルの parseTimestamp の結果
114: */
115: public function parseTimestamp($format)
116: {
117: return $this->original->parseTimestamp($format);
118: }
119: }
120: