ใช้คลาสนิพจน์เมื่อคุณต้องการประเมินการแสดงออกทางคณิตศาสตร์หรือบูลีนจากแหล่งที่ไม่น่าเชื่อถือ คุณสามารถกำหนดตัวแปรและฟังก์ชั่นของคุณเองซึ่งเก็บไว้ในวัตถุ
*
/
-
+
%
, ^
และ **
&&
, ||
, และ !
>
<
==
!=
<=
>=
===
และ !==
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
อ่าวที่มีฟังก์ชั่นที่กำหนดไว้ภายนอก
$e->variables
Assoc Array ที่มีตัวแปรที่กำหนดโดยผู้ใช้และภายนอก
โครงการนี้เริ่มต้นเป็นส้อม รหัสต้นฉบับถูกสร้างขึ้นโดย Miles Kaufmann และเผยแพร่บน phpclasses.org ฉันได้เพิ่มคุณสมบัติและการแก้ไขข้อผิดพลาดมากมายในรหัสต้นฉบับ แต่จากนั้นตัดสินใจว่ารหัสนั้นยากที่จะปรับเปลี่ยนเพื่อเพิ่มคุณสมบัติใหม่และแก้ไขข้อบกพร่อง ดังนั้นฉันตัดสินใจที่จะเขียนทุกอย่างตั้งแต่เริ่มต้นโดยใช้เครื่องกำเนิด PEG Parser
รหัสต้นฉบับยังคงมีอยู่เป็นเวอร์ชัน 1.0 บน Packagist และซอร์สโค้ดที่คุณสามารถค้นหาได้ในสาขา Legacy
ลิขสิทธิ์ (c) 2024 Jakub T. Jankiewicz
ปล่อยภายใต้ใบอนุญาต MIT