Вы можете реализовать шаблон стратегии и получить новые классы форматирования, которые можно менять во время выполнения. Он выглядит сложным, если вы его раньше не видели, но он действительно помогает с ремонтопригодностью и позволяет в любой момент переключать форматер с помощью setFormatter ().
class StyleOne_Formatter implements Formatter
{
public function format($text)
{
return substr($text,0,3).'-'.substr($text,3);
}
}
class StyleTwo_Formatter implements Formatter
{
public function format($text)
{
return substr($text,0,1).'-'.substr($text,1);
}
}
Тогда у вас будет свой класс форматирования, который будет выглядеть так:
class NumberFormatter implements Formatter
{
protected $_formatter = null;
public function setFormatter(Formatter $formatter)
{
$this->_formatter = $formatter;
}
public function format($text)
{
return $this->_formatter->format($text);
}
}
Тогда вы можете использовать это так:
$text = "12345678910";
$formatter = new NumberFormatter();
$formatter->setFormatter(new StyleOne_Formatter());
print $formatter->format($text);
// Outputs 123-45678910
$formatter->setFormatter(new StyleTwo_Formatter());
print $formatter->format($text);
// Outputs 1-2345678910