PMA\libraries\Advisor::ruleExprEvaluate PHP Method

ruleExprEvaluate() public method

Runs a code expression, replacing variable names with their respective values
public ruleExprEvaluate ( string $expr ) : integer
$expr string expression to evaluate
return integer result of evaluated expression
    public function ruleExprEvaluate($expr)
    {
        // Evaluate fired() conditions
        $expr = preg_replace_callback('/fired\\s*\\(\\s*(\'|")(.*)\\1\\s*\\)/Ui', array($this, 'ruleExprEvaluateFired'), $expr);
        // Evaluate variables
        $expr = preg_replace_callback('/\\b(\\w+)\\b/', array($this, 'ruleExprEvaluateVariable'), $expr);
        $value = 0;
        $err = 0;
        // Actually evaluate the code
        ob_start();
        try {
            // TODO: replace by using symfony/expression-language
            eval('$value = ' . $expr . ';');
            $err = ob_get_contents();
        } catch (Exception $e) {
            // In normal operation, there is just output in the buffer,
            // but when running under phpunit, error in eval raises exception
            $err = $e->getMessage();
        }
        ob_end_clean();
        // Error handling
        if ($err) {
            throw new Exception(strip_tags($err) . '<br />Executed code: $value = ' . htmlspecialchars($expr) . ';');
        }
        return $value;
    }