Example #1
0
    }
}
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) {
Example #2
0
 /**
  * Распознование текста на изображении
  * @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);
 }