} } class Divider { public function divide($a, $b) { if ($b == 0) { throw new Exception('Division by zero.'); } return $a / $b; } } // Client code $adder = new Adder(); echo '254 + 113 = ', $adder->add(254, 113), "\n"; $divider = new Divider(); echo '256 / 8 = ', $divider->divide(256, 8), "\n"; class CalculatorFacade { public function __construct(Adder $adder, Subtractor $subtractor, Multiplier $multiplier, Divider $divider) { $this->_adder = $adder; $this->_subtractor = $subtractor; $this->_multiplier = $multiplier; $this->_divider = $divider; } public function calculate($expression) { list($a, $operator, $b) = explode(' ', $expression); // eliminating switch constructs is not in the intent of this pattern switch ($operator) {
/** * Распознование текста на изображении * @param $imgFile * @param array $template * @return string */ public static function read($imgFile, $template) { $img = self::openImg($imgFile); $imgs = Divider::byChar($img); $text = ''; foreach ($imgs as $line) { foreach ($line as $word) { foreach ($word as $char) { $text .= self::defineChar($char, $template); } if (count($word) > 1) { $text .= " "; } } if (count($line) > 1) { $text .= "\n"; } } return trim($text); }