1. Go to this page and download the library: Download choate/matex library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
choate / matex example snippets
$evaluator = new \choate\matex\Evaluator();
echo $evaluator->execute('1 + 2');
/*
Dynamic variable resolver
Invoked when the variable is not found in the cache
Returns the value by name
*/
public function doVariable($name, &$value) {
switch ($name) {
case 'zen':
// Here may be a database request, or a function call
$value = 999;
break;
case 'hit':
$value = 666;
break;
}
}
/*
Dynamic function resolver
Invoked when the function is not found in the cache
Returns an associative array array with:
ref - Function reference
arc - Expected argument count
*/
public function doFunction($name, &$value) {
switch ($name) {
case 'cos':
// Map to a system function
$value = ['ref' => 'cos', 'arc' => 1];
break;
case 'minadd':
// Map to a public object instance function
$value = ['ref' => [$this, 'minAdd'], 'arc' => 2];
break;
}
}
/*
Custom functions, may be a
- Built-in function
- Global defined function
- Static class function
- Object instance function
*/
static function sum($arguments) {
$result = 0;
foreach ($arguments as $argument)
$result += $argument;
return $result;
}
// Just a sample custom function
function minAdd($a, $b) {
$r = $a < 2 ? 2 : $a;
return $r + $b;
}
// Let's do some calculations
$evaluator = new \choate\matex\Evaluator();
$evaluator->variables = [
'a' => 1,
'bet' => -10.59,
'pi' => 3.141592653589
];
$evaluator->onVariable = [$this, 'doVariable'];
$evaluator->functions = [
'sin' => ['ref' => 'sin', 'arc' => 1],
'max' => ['ref' => 'max', 'arc' => null],
'sum' => ['ref' => '\\Space\\Class::sum', 'arc' => null]
];
$evaluator->onFunction = [$this, 'doFunction'];
echo $evaluator->execute('a + MinAdd(PI * sin(zen), cos(-1.7 / pi)) / bet ^ ((A + 2) * 2) + sum(5, 4, max(6, hit))');
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.