Цитата (twin @ 12.07.2019 - 13:50) |
1. жирный, наклонный и зачеркнутый? 2 жирный и зачеркнутый? 3. наклонный и зачеркнутый 4. наклонный и подчеркнутый 5. жирный и подчеркнутый 6. подчеркнутый и зачеркнутый 7. жирный, подчеркнутый и зачеркнутый 8. наклонный зачеркнутый и подчеркнутый |
$result = "";
$type = FormatterFactory::TYPE_HTML;
$words = [
'I am, ' => 'Italic,Bold',
'Human' => 'Bold',
'!' => 'Italic',
];
foreach ($words as $word => $wordModes) {
foreach (explode(',', $wordModes) as $wordMode) {
$word = FormatterFactory::make($type, $wordMode)->render($word);
}
$result .= $word;
}
echo $result;
echo '<br/>';
class FormatterCommonGroup extends Formatter
{
protected $formatters = [];
public function addFormatter(Formatter $formatter)
{
$this->formatters[] = $formatter;
}
public function render($text)
{
if (empty($this->formatters)) {
return $text;
}
foreach ($this->formatters as $formatter) {
$text = $formatter->render($text);
}
return $text;
}
}
class FormatterFactory
{
const TYPE_HTML = '';
const TYPE_BB = 'bb';
const TYPE_COMMON = 'Common';
public function make($type, $formatter)
{
$className = 'Formatter' . ucfirst($type) . ucfirst($formatter);
return new $className;
}
}
$group = FormatterFactory::make(FormatterFactory::TYPE_COMMON, 'Group');
$group->addFormatter(FormatterFactory::make(FormatterFactory::TYPE_HTML, 'Bold'));
$group->addFormatter(FormatterFactory::make(FormatterFactory::TYPE_HTML, 'Italic'));
$obj = new FormatterView('Hello, World!');
echo $obj->render($group);