public function calculate($expression) { $stack = array(); foreach ($expression as $part) { if (in_array($part, array('+', '-', '*', '/'))) { $b = array_pop($stack); $a = array_pop($stack); $operation = OperationFactory::createOperation($part); $result = $operation->calculate($a, $b); array_push($stack, $result); } else { array_push($stack, $part); } } return $stack[0]; }
<?php define('ROOT_PATH', dirname(__FILE__)); require_once ROOT_PATH . '/../../Loader.php'; $opra = OperationFactory::createOperation('+'); $opra->setNumberA(11); $opra->setNumberB(33); echo $opra->getResult();
public function testCreateUnknown() { $this->assertNull(OperationFactory::createOperation('')); }