Pustaka php yang berdiri sendiri untuk mengurai dan menjalankan rumus
composer require mormat/php-formula-interpreter
Pertama, buat sebuah instance dari MormatFormulaInterpreterCompiler
$ compiler = new Mormat FormulaInterpreter Compiler ();
Kemudian gunakan metode compile()
untuk mengurai rumus yang ingin Anda tafsirkan. Ini akan mengembalikan instance MormatFormulaInterpreterExecutable
:
$ executable = $ compiler -> compile ( ' 2 + 2 ' );
Terakhir jalankan rumus dari executable:
$ 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'
Nilai numerik dapat berupa bilangan bulat atau float
2 // integer
2.30 // float
Gunakan kutipan sederhana untuk membatasi string
'foobar'
Gunakan koma untuk memisahkan item dan tanda kurung untuk membungkus item
[1, 2, 3]
Fungsi, string, dan operasi dapat digunakan sebagai item array
[cos(0), 'foobar', 2 + 2]
Operator berikut tersedia:
operator | penggunaan | keterangan |
---|---|---|
+ | a + b | Jumlah a dan b. |
- | a - b | Perbedaan a dan b. |
* | a * b | Produk dari a dan b. |
/ | a / b | Hasil bagi a dan b. |
in | a di b | Jika a adalah array, periksa apakah b adalah item dari a. Jika a adalah string, periksa apakah b adalah substring dari a |
Operator *
, dievaluasi terlebih dahulu, kemudian operator
+
dan -
Anda juga dapat memaksakan prioritas suatu ekspresi dengan menggunakan tanda kurung seperti ini
2 * (3 + 2)
Anda dapat menggunakan tanda kurung sebanyak yang Anda suka.
2 * (2 * (3 + 2 * (3 + 2)) + 2)
Variabel hanyalah sebuah kata di dalam rumus Anda seperti ini:
price * rate / 100
Tepat sebelum menjalankan rumus di PHP, pastikan untuk memasukkan semua variabel yang diperlukan ke dalam array
$ variables = array (
' price ' => 40.2 ,
' rate ' => 12.8
);
$ executable -> run ( $ variables );
nama | jenis yang diperbolehkan | keterangan |
---|---|---|
pi | Dapatkan nilai pi | |
karena | numeric | Kosinus |
dosa | numeric | Sinus |
persegi | numeric | Akar kuadrat |
kekuatan | numeric , numeric | Ekspresi eksponensial |
modulo | numeric , numeric | Sisa nilai pertama dibagi nilai kedua |
huruf kecil | string | Mengonversi menjadi string huruf kecil |
huruf besar | string | Mengonversi menjadi huruf besar string |
menggunakan huruf besar | string | Buat karakter pertama string menjadi huruf besar |
menghitung | string|array | Jika nilai adalah sebuah array, hitung item dalam array. Jika nilai adalah string, hitung karakter dalam string |
Gunakan metode registerCustomFunction()
di kelas MormatFormulaInterpreterCompiler
.
Fungsi khusus harus mengimplementasikan MormatFormulaInterpreterFunctionsFunctionInterface
. Antarmuka ini berisi metode di bawah ini:
Beberapa pengguna mungkin ingin melakukan penghitungan sederhana dan dapat mengubahnya sebanyak yang dia bisa. Sebelum menggunakan perpustakaan, Anda bisa menggunakan fungsi eval
. Namun metode ini mempunyai dua kelemahan utama:
Keamanan. Skrip php sedang dievaluasi oleh fungsi eval. Php adalah bahasa yang sangat kuat, mungkin terlalu kuat bagi pengguna terutama ketika pengguna ingin memasukkan kode berbahaya.
Kompleksitas. Php juga rumit bagi seseorang yang tidak mengerti bahasa pemrograman. Akan lebih baik jika menafsirkan rumus seperti excel.