php插件StringCalc计算器的使用

mac2025-01-11  15

get到了一个php插件StringCalc计算器,这边做下记录。

这个插件最少得php5.5才能执行

一、源码网址:https://github.com/chriskonnertz/string-calc/tree/master/src/ChrisKonnertz/StringCalc

二、用法

 使用下载下来的包里面的内容。  

1)、这个是github上的demo:

<?php /** * Minimal class autoloader * * @param string $class Full qualified name of the class */ function miniAutoloader($class) { require __DIR__ . '/../src/' . $class . '.php'; } spl_autoload_register('miniAutoloader'); $term = isset($_POST['term']) ? $_POST['term'] : null; ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>StringCalc Demo</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/framy/latest/css/framy.min.css"> <style> body { padding: 20px } h1 { margin-bottom: 40px } h4 { margin-top: 40px } form { margin-bottom: 20px } div.success { border: 1px solid #4ce276; padding: 10px; border-top-width: 10px } div.error { border: 1px solid #f36362; padding: 10px; border-top-width: 10px } </style> </head> <body> <h1>StringCalc Demo</h1> <form method="POST"> <div class="form-element"> <label for="term">Term:</label> <input id="term" class="form-field" name="term" type="text" value="<?php echo $term !== null ? $term : '1+(2+max(-3,3))' ?>"> </div> <input type="submit" value="Calc" class="button"> </form> <div class="block result"> <?php $stringCalc = new ChrisKonnertz\StringCalc\StringCalc(); if ($term !== null) { try { $result = $stringCalc->calculate($term); echo '<div class="success">Result: <code><b>' . $result . '</b></code> (Type: ' . gettype($result) . ')</div>'; } catch (ChrisKonnertz\StringCalc\Exceptions\StringCalcException $exception) { echo '<div class="error">'.$exception->getMessage(); if ($exception->getPosition()) { echo ' at position <b>' . $exception->getPosition() . '</b>'; } if ($exception->getSubject()) { echo ' with subject "<b>' . $exception->getSubject() . '</b>"'; } echo '</div>'; } catch (Exception $exception) { echo '<div class="error outside">'.$exception->getMessage().'</div>'; } } ?> </div> <div class="block grammar"> <?php $grammar = new \ChrisKonnertz\StringCalc\Grammar\StringCalcGrammar(); echo '<h4>Grammar rules</h4><pre>'.$grammar->__toString().'</pre>'; ?> </div> </body> </html>

2)、自己写的应用:我这边只用到计算,没有使用到自定义添加其他计算符合

<?php function miniAutoloader($class) { require __DIR__ . '/' . $class . '.php'; } spl_autoload_register('miniAutoloader'); class Chriskonnertz{ public function evaluate($string){ if(empty($string)){ return null; }else{ $stringCalc = new ChrisKonnertz\StringCalc\StringCalc(); $result = $stringCalc->calculate($string); return $result; } } }

注:对应的处理计算、令牌和解析直接使用StringCalc.php里面的。

3)、控制器需要使用的话就把计算的字符串传到evaluate()就可以,字符串为计算公式,例:1+(-1)。在windows环境下可以这样写,但是在Linux环境下一定要把路径中的\转化成/,要不然会识别不到路径。

注:这段是自动加载器:

windows环境下:

function miniAutoloader($class) { require __DIR__ . '/../src/' . $class . '.php'; } spl_autoload_register('miniAutoloader');

Linux环境下:

function miniAutoloader($class) { $class=str_replace("\\","/",$class); require __DIR__ . '/../src/' . $class . '.php'; } spl_autoload_register('miniAutoloader');

 

最新回复(0)