1: <?php
2: /*
3: * Copyright (c) 2015 @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.1.1
27: */
28: namespace Peach\DT;
29:
30: /**
31: * 現在時刻を生成するためのクラスです. このクラスのインスタンスは
32: * {@link Peach\DT\Date::now},
33: * {@link Peach\DT\Datetime::now},
34: * {@link Peach\DT\Timestamp::now}
35: * などのメソッドの引数に渡す形で使用します.
36: *
37: * このクラスの具象クラスは以下の用途で利用されることを想定しています.
38: *
39: * - 現在時刻に依存する機能の単体テスト
40: * - 現在時刻を過去または未来にセットして特定の機能をエミュレートする
41: */
42: abstract class Clock
43: {
44: /**
45: * この Clock が指し示す時間を Unix time として返します.
46: *
47: * @return int Unix time
48: */
49: abstract protected function getUnixTime();
50:
51: /**
52: * {@link Peach\DT\Clock::getUnixTime} で取得した値を使って
53: * Timestamp インスタンスを生成します.
54: *
55: * @return Timestamp
56: */
57: public function getTimestamp()
58: {
59: $ms = $this->getUnixTime();
60: return UnixTimeFormat::getInstance()->parseTimestamp($ms);
61: }
62: }
63: