| Recommend this page to a friend! | 
|  Download | 
| Info | Example |  Files |  Install with Composer |  Download | Reputation | Support forum | Blog | Links | 
| Last Updated | Ratings | Unique User Downloads | Download Rankings | |||||
| 2025-01-25 (5 months ago)  | Not yet rated by the users | Total: Not yet counted | Not yet ranked | |||||
| Version | License | PHP version | Categories | |||
| brick-engine 1.0 | MIT/X Consortium ... | 7 | Parsers, PHP 7, Business | 
| 
<?php | 
BrickEngine is a simple, flexible, and extensible script engine written in PHP. It allows you to manage custom business rules, e-commerce discounts, automation scenarios, or any workflow you define without "changing code."
> Status: The project is still in development and may not yet be fully ready for production use. > Support Us: If you like the project, please star it or contribute to support its development.
Via Composer
composer require isaeken/brick-engine
The example below demonstrates a simple script that applies a discount if the cart total exceeds 100 units and then processes an e-commerce scenario by fetching a response from an external API.
<?php
require __DIR__ . '/vendor/autoload.php';
use IsaEken\BrickEngine\BrickEngine;
$script = <<<BRICK
if (cart['total'] > 100) {
    apply_discount();
    return "You have a discount!";
}
response = fetch('https://api.example.com');
response = json_decode(response);
return response['message'];
BRICK;
$engine = new BrickEngine();
// Define functions to be used within the script
$engine->context->functions['apply_discount'] = function () {
    $this->context->cart['total'] -= 10; // Apply a discount of 10 units
};
// Define variables to be used in the script
$engine->context->variables['cart'] = ['total' => 120];
$result = $engine->run($script)->value->data;
echo $result; // "You have a discount!" or API message
How It Works
You can run the example script in a Docker container using the following commands:
docker build -t brick-engine .
docker run --rm -v "$(pwd)":/app brick-engine ./examples/example.bee
Read the full ROADMAP.md file for more details on the project's future development plans.
This project is licensed under the MIT License. For more information, see the LICENSE.md file.
|  Files (87) | 
| File | Role | Description | ||
|---|---|---|---|---|
|  .github (1 file, 1 directory) | ||||
|  bin (2 files) | ||||
|  examples (4 files) | ||||
|  src (6 files, 9 directories) | ||||
|  tests (2 files, 2 directories) | ||||
|  composer.json | Data | Auxiliary data | ||
|  composer.lock | Data | Auxiliary data | ||
|  Dockerfile | Data | Auxiliary data | ||
|  LICENSE.md | Lic. | License text | ||
|  phpunit.xml | Data | Auxiliary data | ||
|  README.md | Doc. | Read me | ||
|  ROADMAP.md | Data | Auxiliary data | ||
|  test.php | Example | Example script | ||
|  Files (87) | / | examples | 
| File | Role | Description | 
|---|---|---|
|  code.txt | Doc. | Documentation | 
|  code2.txt | Doc. | Documentation | 
|  example.bee | Data | Auxiliary data | 
|  simple.txt | Doc. | Documentation | 
|  Files (87) | / | src | 
| File | Role | Description | ||
|---|---|---|---|---|
|  Contracts (4 files) | ||||
|  DataObjects (1 file) | ||||
|  Enums (1 file) | ||||
|  Exceptions (13 files) | ||||
|  Expressions (9 files) | ||||
|  Extensions (4 files) | ||||
|  Lexers (3 files) | ||||
|  Runtime (1 file) | ||||
|  Statements (10 files) | ||||
|  BrickEngine.php | Class | Class source | ||
|  ExecutionResult.php | Class | Class source | ||
|  Node.php | Class | Class source | ||
|  Parser.php | Class | Class source | ||
|  Runtime.php | Class | Class source | ||
|  Value.php | Class | Class source | ||
|  Files (87) | / | src | / | Contracts | 
| File | Role | Description | 
|---|---|---|
|  ExpressionInterface.php | Class | Class source | 
|  ExtensionInterface.php | Class | Class source | 
|  NodeInterface.php | Class | Class source | 
|  StatementInterface.php | Class | Class source | 
|  Files (87) | / | src | / | Exceptions | 
| File | Role | Description | 
|---|---|---|
|  ArrayKeyNotFoundException.php | Class | Class source | 
|  FunctionNotFoundException.php | Class | Class source | 
|  IgnorableException.php | Class | Class source | 
|  InternalCriticalException.php | Class | Class source | 
|  InvalidForeachTargetException.php | Class | Class source | 
|  InvalidLeftSideTargetException.php | Class | Class source | 
|  InvalidLiteralException.php | Class | Class source | 
|  InvalidStatementException.php | Class | Class source | 
|  InvalidSyntaxException.php | Class | Class source | 
|  UnexpectedCharacterException.php | Class | Class source | 
|  UnexpectedTokenException.php | Class | Class source | 
|  UnsupportedException.php | Class | Class source | 
|  VariableNotFoundException.php | Class | Class source | 
|  Files (87) | / | src | / | Expressions | 
| File | Role | Description | 
|---|---|---|
|  ArrayAccessExpression.php | Class | Class source | 
|  ArrayElementExpression.php | Class | Class source | 
|  ArrayLiteralExpression.php | Class | Class source | 
|  BinaryExpression.php | Class | Class source | 
|  FunctionCallExpression.php | Class | Class source | 
|  IdentifierExpression.php | Class | Class source | 
|  LiteralExpression.php | Class | Class source | 
|  ObjectLiteralExpression.php | Class | Class source | 
|  ParamDefinitionExpression.php | Class | Class source | 
|  Files (87) | / | src | / | Extensions | 
| File | Role | Description | 
|---|---|---|
|  ConsoleExtension.php | Class | Class source | 
|  HttpExtension.php | Class | Class source | 
|  JsonExtension.php | Class | Class source | 
|  VarDumperExtension.php | Class | Class source | 
|  Files (87) | / | src | / | Lexers | 
| File | Role | Description | 
|---|---|---|
|  BaseLexer.php | Class | Class source | 
|  Lexer.php | Class | Class source | 
|  ScriptLexer.php | Class | Class source | 
|  Files (87) | / | src | / | Statements | 
| File | Role | Description | 
|---|---|---|
|  AssignmentStatement.php | Class | Class source | 
|  BlockStatement.php | Class | Class source | 
|  ExpressionStatement.php | Class | Class source | 
|  ForeachStatement.php | Class | Class source | 
|  ForStatement.php | Class | Class source | 
|  FunctionDeclareStatement.php | Class | Class source | 
|  IfStatement.php | Class | Class source | 
|  ProgramStatement.php | Class | Class source | 
|  ReturnStatement.php | Class | Class source | 
|  WhileStatement.php | Class | Class source | 
|  Files (87) | / | tests | 
| File | Role | Description | ||
|---|---|---|---|---|
|  Feature (3 files) | ||||
|  Unit (2 directories) | ||||
|  Pest.php | Example | Example script | ||
|  TestCase.php | Class | Class source | ||
|  Files (87) | / | tests | / | Feature | 
| File | Role | Description | 
|---|---|---|
|  ArrayManipulationTest.php | Example | Example script | 
|  CalculatorTest.php | Example | Example script | 
|  FibonacciTest.php | Example | Example script | 
|  Files (87) | / | tests | / | Unit | / | Expressions | 
| File | Role | Description | 
|---|---|---|
|  ArrayAccessExpressionTest.php | Class | Class source | 
|  ArrayLiteralExpressionTest.php | Class | Class source | 
|  BinaryExpressionTest.php | Class | Class source | 
|  FunctionCallExpressionTest.php | Class | Class source | 
|  IdentifierExpressionTest.php | Class | Class source | 
|  LiteralExpressionTest.php | Class | Class source | 
|  ObjectLiteralExpressionTest.php | Class | Class source | 
|  Files (87) | / | tests | / | Unit | / | Statements | 
| File | Role | Description | 
|---|---|---|
|  AssignmentStatementTest.php | Class | Class source | 
|  BlockStatementTest.php | Class | Class source | 
|  ForeachStatementTest.php | Class | Class source | 
|  FunctionDeclareStatementTest.php | Class | Class source | 
|  IfStatementTest.php | Class | Class source | 
|  ReturnStatementTest.php | Class | Class source | 
|  WhileStatementTest.php | Class | Class source | 
| The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page. | 
|  Install with Composer | 
| Version Control | Unique User Downloads | |||||||
| 100% | 
 | 
| Applications that use this package | 
 If you know an application of this package, send a message to the author to add a link here.
 If you know an application of this package, send a message to the author to add a link here.