Use a classe de expressão quando deseja avaliar expressões matemáticas ou booleanas de fontes não confiáveis. Você pode definir suas próprias variáveis e funções, que são armazenadas no objeto.
*
/
-
+
%
, ^
e **
&&
, ||
, e !
>
<
==
!=
<=
>=
===
e !==
pi
e e
=~
>>
<<
composer require jcubic/expression
<?
require_once ( __DIR__ . " /vendor/autoload.php " );
use jcubic Expression ;
$ e = new Expression ();
// basic evaluation:
$ result = $ e -> evaluate ( ' 2+2 ' );
// supports: order of operation; parentheses; negation; built-in functions
$ result = $ e -> evaluate ( ' -8(5/2)^2*(1-sqrt(4))-8 ' );
// support of booleans
$ result = $ e -> evaluate ( ' 10 < 20 || 20 > 30 && 10 == 10 ' );
// support for strings and match (regexes can be like in php or like in javascript)
$ result = $ e -> evaluate ( ' "Foo,Bar" =~ /^([fo]+),(bar)$/i ' );
// previous call will create $0 for whole match match and $1,$2 for groups
$ result = $ e -> evaluate ( ' $2 ' );
// create your own variables
$ e -> evaluate ( ' a = e^(ln(pi)) ' );
// or functions
$ e -> evaluate ( ' f(x,y) = x^2 + y^2 - 2x*y + 1 ' );
// and then use them
$ result = $ e -> evaluate ( ' 3*f(42,a) ' );
// create external functions
$ e -> functions [ ' foo ' ] = function () {
return " foo " ;
};
// and use them
$ result = $ e -> evaluate ( ' foo() ' );
$e->evalute($expr)
Avalia a expressão e retorna o resultado. Se ocorrer um erro, imprime um aviso e retornará falso. Se $ EXPR for uma atribuição de funções, retorna true no sucesso.
$e->e($expr)
Um sinônimo de $ e-> avaliar ().
$e->vars()
Retorna uma matriz associativa de todas as variáveis e valores definidos pelo usuário.
$e->funcs()
Retorna uma matriz de todas as funções definidas pelo usuário.
$e->suppress_errors
Definido como true para desativar os avisos ao avaliar expressões
$e->last_error
Se a última avaliação falhar, contiver uma string descrevendo o erro. (Útil quando supressão_errors está ligado).
$e->functions
Matriz de associação que contém funções definidas externamente.
$e->variables
Matriz de associação que contém variáveis definidas pelo usuário e externamente.
Este projeto começou como um garfo. O código original foi criado por Miles Kaufmann e publicado em phpclasses.org. Adicionei muitos recursos e correções de bug ao código original, mas decidi que o código é realmente difícil de modificar para adicionar novos recursos e corrigir erros. Então eu decido reescrever tudo do zero usando o Gerador de Analisador de PEG.
O código original ainda está disponível como versão 1.0 no Packagist e o código -fonte que você pode encontrar no Legacy Branch.
Copyright (C) 2024 Jakub T. Jankiewicz
Libertado sob licença do MIT