Utilisez la classe d'expression lorsque vous souhaitez évaluer les expressions mathématiques ou booléennes à partir de sources non fiables. Vous pouvez définir vos propres variables et fonctions, qui sont stockées dans l'objet.
*
/
-
+
%
, ^
et **
&&
, ||
, et !
>
<
==
!=
<=
>=
===
et !==
pi
et 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)
Évalue l'expression et renvoie le résultat. Si une erreur se produit, imprime un avertissement et renvoie faux. Si $ expr est une affectation de fonction, renvoie vrai sur le succès.
$e->e($expr)
Un synonyme de $ e-> evaluate ().
$e->vars()
Renvoie un tableau associatif de toutes les variables et valeurs définies par l'utilisateur.
$e->funcs()
Renvoie un tableau de toutes les fonctions définies par l'utilisateur.
$e->suppress_errors
Réglé sur True pour désactiver les avertissements lors de l'évaluation des expressions
$e->last_error
Si la dernière évaluation a échoué, contient une chaîne décrivant l'erreur. (Utile lorsque Suppress_errors est allumé).
$e->functions
Array Assoc qui contient des fonctions définies à l'extérieur.
$e->variables
Array Assoc qui contient des variables définies par l'utilisateur et à l'externe.
Ce projet a commencé comme une fourche. Le code original a été créé par Miles Kaufmann et publié sur phpclasses.org. J'ai ajouté beaucoup de fonctionnalités et de corrections de bugs au code d'origine, mais j'ai ensuite décidé que le code est vraiment difficile à modifier pour ajouter de nouvelles fonctionnalités et corriger les bogues. Je décide donc de tout réécrire à partir de zéro à l'aide du générateur PEG Parser.
Le code d'origine est toujours disponible en version 1.0 sur Packagist et le code source que vous pouvez trouver dans la branche héritée.
Copyright (C) 2024 Jakub T. Jankiewicz
Libéré sous la licence MIT