1. Go to this page and download the library: Download eftec/minilang 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/ */
eftec / minilang example snippets
if($condition) {
$variable=1;
}
$script='if($condition) {
$variable=1;
}';
// and later..
eval($script);
$mini->separate("when condition then variable=1");
use eftec\minilang\MiniLang;
separate("when field1=1 then field2=2"); // we set the logic of the language but we are not executed it yet.
$mini->separate("when field1=2 then field2=4"); // we set more logic.
$result=['field1'=>1,'field2'=>0]; // used for variables.
$callback=new stdClass(); // used for callbacks if any
$mini->evalAllLogic($callback,$result);
var_dump($result);
use eftec\minilang\MiniLang;
lobal1="hello";
$mini=new MiniLang(null,$result);
$mini->throwError=false; // if error then we store the errors in $mini->errorLog;
$mini->separate('when var1="hello" then var2="world" '); // if var1 is equals "hello" then var2 is set "world"
$mini->separate('when $global1="hello" then $global2="world" '); // we can also use php variables (global)
$mini->evalAllLogic(false); // false means it continues to evaluate more expressions if any
// (true means that it only evaluates the first expression where "when" is valid)
var_dump($result); // array(2) { ["var1"]=> string(5) "hello" ["var2"]=> string(5) "world" }
var_dump($global2); // string(5) "world"
$this->throwError=false;
$mini->separate("when FIELDDOESNOTEXIST=1 then field2=2");
var_dump($this->errorLog);
$mini->separate("when field1=1 then field2=2");
$mini=new MiniLang();
$mini->separate("when field1>0 then field2=3"); // we prepare the language
$variables=['field1'=>1]; // we define regular variables
$callback=new stdClass();
$mini->evalAllLogic($callback,$variables); // we set the variables and run the languageand run the language
var_dump($variables); // field1=1, field2=3
class MyModel {
var $id=1;
var $value="";
public function __construct($id=0, $value="")
{
$this->id = $id;
$this->value = $value;
}
}
class ClassCaller {
public function Processcaller($arg) {
echo "Caller: setting the variable {$arg->id}<br>";
}
}
class ClassService {
public function ProcessService($arg) {
echo "Service: setting the variable {$arg->id}<br>";
}
}
$mini=new MiniLang([],[],new ClassService());
$mini->separate("when field1.id>0 then
field2.value=3
and field3.processcaller
and processcaller(field3)
and processservice(field3)"); // we prepare the language
$variables=['field1'=>new MyModel(1,"hi")
,'field2'=>new MyModel(2,'')
,'field3'=>new MyModel(3,'')]; // we define regular variables
$callback=new ClassCaller();
$mini->evalAllLogic($callback,$variables,false); // we set the variables and run the languageand run the language
var_dump($variables);
vararray.associndex // vararray['associindex'] ('hi')
vararray.4 // vararray[4] 'last'
vararray.123 // it will throw an error (out of index)
vararray.param('a.b.c')) // vararray['a']['b']['c'] ('nested')
param(vararray,'a.b.c')) // vararray['a']['b']['c'] ('nested')
vararray._first // first element ('hi')
vararray._last // last element ('last')
vararray._count // returns the number of elements. (6)
class ClassCaller {
public function Processcaller($arg) {
echo "Caller: setting the variable {$arg['id']}<br>";
}
}
class ClassService {
public function ProcessService($arg) {
echo "Service: setting the variable {$arg['id']}<br>";
}
}
$mini=new MiniLang([],[],new ClassService());
$mini->separate("when field1.id>0 then
field2.value=3
and field3.processcaller
and processcaller(field3)
and processservice(field3)");
$variables=['field1'=>['id'=>1,'value'=>3]
,'field2'=>['id'=>2,'value'=>'']
,'field3'=>['id'=>3,'value'=>'']
];
$callback=new ClassCaller();
$mini->evalAllLogic($callback,$variables,false);
var_dump($variables);
$field1=1; // our global variable
$mini=new MiniLang();
$mini->separate('when $field1>0 then $field1=3'); // we prepare the language
$variables=[]; // local variables
$callback=new stdClass();
$mini->evalAllLogic($callback,$variables); // we set the variables and run the languageand run the language
var_dump($field1); // returns 3
$mini=new MiniLang();
$mini->separate("when true=true then field1=timer()"); // we prepare the language
$variables=['field1'=>1]; // we define regular variables
$callback=new stdClass();
$mini->evalAllLogic($callback,$variables); // we set the variables and run the language
var_dump($variables);
class ClassWithTimer {
var $dateLastChange;
public function dateInit() {
return time();
}
public function __construct()
{
$this->dateLastChange=time();
}
}
$mini=new MiniLang();
$mini->separate("when true=true then field1=interval() and field2=fullinterval()"); // we prepare the language
$variables=['field1'=>0,'field2'=>0]; // we define regular variables
$callback=new ClassWithTimer();
$mini->evalAllLogic($callback,$variables); // we set the variables and run the language
var_dump($variables);
$mini->separate("init tmp=50 when condition=1 then field1+10"); // set tmp to 50. If condition is 1 then it increases the field1 by 10.
$mini->separate("when condition=1 then field1+10"); // if condition is 1 then it increases the field1 by 10.
$this->separate('loop variableloop=variable_with_values');
// where variable_with_values is must contains an array of values
// variableloop._key will contain the key of the loop
// variableloop._value will contain the value of the loop
$this->separate('loop end');
$this->separate('when condition set break else break');
$this->separate('loop $row=variable');
$this->separate('loop $row2=variable');
$this->separate('where op=2 then cc=2');
$this->separate('where op=3 then break'); // ends of the first loop
$this->separate('loop end');
$this->separate('loop end')
$obj->evalAllLogic();
// create an instance of MiniLang
$mini=new MiniLang(null);
// the logic goes here
$mini->separate2('when var1="hello" and comp.f=false() then var2="world" '); // if var1 is equals "hello" then var2 is set "world"
// and the generation of the class
$r=$mini->generateClass('ExampleBasicClass','ns\example','ExampleBasicClass.php');
namespace ns\example;
use eftec\minilang\MiniLang;
class ExampleBasicClass extends MiniLang {
public $numCode=2; // num of lines of code
public $usingClass=true; // if true then we are using a class (this class)
public function whereRun($lineCode=0) {
// ...
} // end function WhereRun
public function setRun($lineCode=0) {
// ...
} // end function SetRun
public function elseRun($lineCode=0) {
// ...
} // end function ElseRun
public function initRun($lineCode=0) {
// ...
} // end function InitRun
} // end class
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.