Пример #1
0
    }
    public function getText()
    {
        $str = parent::getText();
        $str = mb_convert_kana($str, "RANSKV");
        return $str;
    }
}
/*
 * Client
 */
$text = isset($_POST['text']) ? $_POST['text'] : '';
$decorate = isset($_POST['decorate']) ? $_POST['decorate'] : array();
if ($text !== '') {
    $text_object = new PlainText();
    $text_object->setText($text);
    //ココに注目!新たに生成されるDecoretorClassが、
    //以前のComponentClassやDecoratorクラスを保持するという構成になっている。
    foreach ($decorate as $val) {
        switch ($val) {
            case 'double':
                $text_object = new DoubleByteText($text_object);
                break;
            case 'upper':
                $text_object = new UpperCaseText($text_object);
                break;
            default:
                throw new RuntimeException('invalid decorator');
        }
    }
    echo htmlspecialchars($text_object->getText(), ENT_QUOTES, mb_internal_encoding()) . "<br>";