مكتبة php مستقلة لتحليل الصيغ وتشغيلها
composer require mormat/php-formula-interpreter
أولاً، قم بإنشاء مثيل لـ MormatFormulaInterpreterCompiler
$ compiler = new Mormat FormulaInterpreter Compiler ();
ثم استخدم طريقة compile()
لتحليل الصيغة التي تريد تفسيرها. سيُرجع مثيلاً لـ MormatFormulaInterpreterExecutable
:
$ executable = $ compiler -> compile ( ' 2 + 2 ' );
أخيرًا قم بتشغيل الصيغة من الملف القابل للتنفيذ:
$ result = $ executable -> run ();
// $result equals 4
// variables can be used
price + 2
// parenthesis can be used
(1 + 2) * 3
// default functions are available
sqrt(4)
// complex formulas can be used
(((100 * 0.43075) * 1.1 * 1.5) / (1-0.425)) * 1.105
// string are supported
lowercase('FOO')
// arrays are supported
count([2, 3, 4])
// custom functions can be registered
your_function_here(2)
// use the in operator to check if an item is in array
1 in [1, 2, 3] // returns true
// use the in operator to check if a substring is in a string
'Wars' in 'Star Wars'
يمكن أن تكون القيمة الرقمية عددًا صحيحًا أو عددًا عشريًا
2 // integer
2.30 // float
استخدم الاقتباس البسيط لتحديد السلاسل
'foobar'
استخدم الفاصلة للفصل بين العناصر والأقواس لالتفاف العناصر
[1, 2, 3]
يمكن استخدام الوظائف والسلاسل والعمليات كعنصر في مصفوفة
[cos(0), 'foobar', 2 + 2]
المشغلين التاليين متاحون:
مشغل | الاستخدام | وصف |
---|---|---|
+ | أ + ب | مجموع أ و ب. |
- | أ - ب | الفرق بين أ و ب. |
* | أ * ب | منتج أ و ب. |
/ | أ / ب | حاصل a و b. |
in | أ في ب | إذا كان a عبارة عن مصفوفة، يتم التحقق مما إذا كان b عنصرًا في a. إذا كانت a عبارة عن سلسلة، يتم التحقق مما إذا كانت b عبارة عن سلسلة فرعية من a |
يتم تقييم العوامل *
و أولاً، ثم العوامل
+
و -
يمكنك أيضًا فرض أولوية التعبير باستخدام الأقواس مثل هذا
2 * (3 + 2)
يمكنك استخدام أي عدد تريده من الأقواس.
2 * (2 * (3 + 2 * (3 + 2)) + 2)
المتغير هو مجرد كلمة داخل الصيغة الخاصة بك مثل هذا:
price * rate / 100
قبل تنفيذ صيغة في PHP، تأكد من إدخال جميع المتغيرات المطلوبة في المصفوفة
$ variables = array (
' price ' => 40.2 ,
' rate ' => 12.8
);
$ executable -> run ( $ variables );
اسم | الأنواع المسموح بها | وصف |
---|---|---|
باي | احصل على قيمة pi | |
كوس | numeric | جيب التمام |
خطيئة | numeric | جيب |
com.sqrt | numeric | الجذر التربيعي |
الأسرى | numeric ، numeric | التعبير الأسي |
modulo | numeric ، numeric | باقي القيمة الأولى مقسومة على القيمة الثانية |
أحرف صغيرة | string | تحويل إلى سلسلة صغيرة |
كبيرة | string | تحويل إلى سلسلة كبيرة |
الاستفادة | string | جعل الحرف الأول من السلسلة كبيرًا |
عدد | string|array | إذا كانت القيمة عبارة عن مصفوفة، فاحسب العناصر الموجودة في المصفوفة. إذا كانت القيمة عبارة عن سلسلة، فاحسب الأحرف الموجودة في السلسلة |
استخدم أسلوب registerCustomFunction()
في فئة MormatFormulaInterpreterCompiler
.
يجب أن تقوم الوظيفة المخصصة بتنفيذ MormatFormulaInterpreterFunctionsFunctionInterface
. تحتوي هذه الواجهة على الطرق التالية:
قد يرغب بعض المستخدمين في إجراء عملية حسابية بسيطة والقدرة على تغييرها قدر الإمكان. قبل استخدام المكتبة، يمكنك استخدام وظيفة eval
. لكن هذه الطريقة لها عيبان رئيسيان:
حماية. يتم تقييم البرنامج النصي php بواسطة وظيفة التقييم. PHP هي لغة قوية جدًا، وربما قوية جدًا بالنسبة للمستخدم خاصة عندما يريد المستخدم إدخال تعليمات برمجية ضارة.
تعقيد. يعد PHP أيضًا معقدًا بالنسبة لشخص لا يفهم لغة البرمجة. قد يكون من الجيد تفسير صيغة تشبه Excel بدلاً من ذلك.