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.0
27: */
28: namespace Peach\DF;
29:
30: /**
31: * MIME base64 方式の文字列のエンコードおよびデコードを行うクラスです.
32: *
33: * このクラスは
34: * {@link http://php.net/manual/ja/function.base64-encode.php base64_encode} および
35: * {@link http://php.net/manual/ja/function.base64-decode.php base64_decode}
36: * のラッパーとして機能します.
37: */
38: class Base64Codec implements Codec
39: {
40: /**
41: * もしもこの変数が true の場合,
42: * decode() の引数に base64 アルファベット以外の文字が含まれていた際に
43: * false を返します.
44: *
45: * @var bool
46: */
47: private $strict;
48:
49: /**
50: * このクラスはシングルトンです. 直接インスタンス化することは出来ません.
51: *
52: * @param bool $strict base64_decode() の第 2 引数に相当する bool 値
53: */
54: private function __construct($strict)
55: {
56: $this->strict = $strict;
57: }
58:
59: /**
60: * このクラスのインスタンスを返します.
61: *
62: * @param bool $strict base64_decode() の第 2 引数に相当する bool 値
63: * @return Base64Codec
64: */
65: public static function getInstance($strict = false)
66: {
67: // @codeCoverageIgnoreStart
68: static $instance = array();
69: if (!count($instance)) {
70: $instance[0] = new self(false);
71: $instance[1] = new self(true);
72: }
73: // @codeCoverageIgnoreEnd
74:
75: $key = $strict ? 1 : 0;
76: return $instance[$key];
77: }
78:
79: /**
80: * 指定された base64 形式の文字列をデコードします.
81: *
82: * @param string $text base64 でエンコードされた文字列
83: * @return string 変換結果
84: */
85: public function decode($text)
86: {
87: return base64_decode($text, $this->strict);
88: }
89:
90: /**
91: * 指定された文字列を base64 でエンコードします.
92: *
93: * @param string $var エンコード対象の文字列
94: * @return string base64 形式の文字列
95: */
96: public function encode($var)
97: {
98: return base64_encode($var);
99: }
100: }
101: