public static function breakUp($expressie) { $parts = array_reverse(str_split($expressie)); $expressions = []; $number = false; while (!empty($parts)) { $part = array_pop($parts); switch ($part) { case preg_match('/[0-9.]/', $part) ? true : false: if (!$number) { $expressions[] = $number = new Number(); } $number->add($part); break; case preg_match('/[+-\\/*]/', $part) ? true : false: $expressions[] = SolverFactory::buildSolver($part); break; case preg_match('/[\\[\\]]/', $part) ? true : false: $expressions[] = new Bracket(); break; default: $number = false; } } return $expressions; }