استخدم فئة التعبير عندما تريد تقييم التعبيرات الرياضية أو المنطقية من مصادر غير موثوق بها. يمكنك تحديد المتغيرات والوظائف الخاصة بك ، والتي يتم تخزينها في الكائن.
*
/
-
+
%
، ^
، و **
&&
، ||
، و !
>
<
==
!=
<=
>=
===
و !==
pi
و 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)
يقيم التعبير ويعيد النتيجة. في حالة حدوث خطأ ، يطبع تحذير ويعيد خطأ. إذا كانت $ expr مهمة دالة ، فإن إرجاع صحيح على النجاح.
$e->e($expr)
مرادف لـ $ E-> تقييم ().
$e->vars()
إرجاع مجموعة نقاطية لجميع المتغيرات والقيم المعرفة من قبل المستخدم.
$e->funcs()
إرجاع مجموعة من جميع الوظائف المعرفة من قبل المستخدم.
$e->suppress_errors
تم تعيينه على صواب لإيقاف التحذيرات عند تقييم التعبيرات
$e->last_error
إذا فشل التقييم الأخير ، يحتوي على سلسلة تصف الخطأ. (مفيد عند قمعها).
$e->functions
صفيف ASSC الذي يحتوي على وظائف محددة خارجيا.
$e->variables
صفيف ASSC الذي يحتوي على متغيرات محددة من قبل المستخدم وخارجها.
بدأ هذا المشروع كشوكة. تم إنشاء الكود الأصلي بواسطة Miles Kaufmann ونشرت على phpclasses.org. لقد أضفت الكثير من الميزات وإصلاحات الأخطاء إلى التعليمات البرمجية الأصلية ، ولكن قررت بعد ذلك أنه يصعب تعديل الكود لإضافة ميزات جديدة وإصلاح الأخطاء. لذلك قررت إعادة كتابة كل شيء من نقطة الصفر باستخدام مولد محلل PEG.
لا يزال الرمز الأصلي متاحًا كإصدار 1.0 على Packagist والرمز المصدر الذي يمكنك العثور عليه في Legacy Branch.
حقوق الطبع والنشر (C) 2024 Jakub T. Jankiewicz
تم إصداره بموجب ترخيص معهد ماساتشوستس للتكنولوجيا