PHPackages                             wuwx/laravel-expression-language - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. wuwx/laravel-expression-language

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

wuwx/laravel-expression-language
================================

v4.2.1(3mo ago)21.1k1MITPHPCI failing

Since Nov 22Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/wuwx/laravel-expression-language)[ Packagist](https://packagist.org/packages/wuwx/laravel-expression-language)[ RSS](/packages/wuwx-laravel-expression-language/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (10)Dependencies (5)Versions (11)Used By (1)

Laravel Expression Language
===========================

[](#laravel-expression-language)

[![License](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](LICENSE)

将 Symfony ExpressionLanguage 组件集成到 Laravel 的扩展包，让你可以在 Laravel 应用中安全地执行动态表达式。

功能特性
----

[](#功能特性)

- **简单易用** - 通过 Facade 或服务容器快速调用
- **安全执行** - 基于 Symfony 的表达式引擎，安全可控
- **Laravel 集成** - 自动服务注册，支持门面模式
- **广泛兼容** - 支持 Laravel 5.8 至 12.0
- **内置函数** - 预置 `array_get` 辅助函数

安装
--

[](#安装)

```
composer require wuwx/laravel-expression-language
```

### Laravel 自动发现

[](#laravel-自动发现)

该扩展包支持 Laravel 的自动发现功能，安装后即可使用。

### 手动注册（可选）

[](#手动注册可选)

如果你需要手动注册，在 `config/app.php` 中添加：

```
'providers' => [
    // ...
    Wuwx\LaravelExpressionLanguage\Providers\ExpressionLanguageServiceProvider::class,
],

'aliases' => [
    // ...
    'ExpressionLanguage' => Wuwx\LaravelExpressionLanguage\Facades\ExpressionLanguageFacade::class,
],
```

基本用法
----

[](#基本用法)

### 使用门面（Facade）

[](#使用门面facade)

```
use ExpressionLanguage;

// 简单的数学表达式
$result = ExpressionLanguage::evaluate('1 + 1'); // 返回 2

// 使用变量
$result = ExpressionLanguage::evaluate('price * quantity', [
    'price' => 100,
    'quantity' => 3
]); // 返回 300

// 条件表达式
$result = ExpressionLanguage::evaluate('user.age >= 18', [
    'user' => ['age' => 20]
]); // 返回 true
```

### 使用服务容器

[](#使用服务容器)

```
// 通过 app 辅助函数
$result = app('expressionLanguage')->evaluate('1 + 1');

// 通过依赖注入
class OrderController extends Controller
{
    public function calculate($expressionLanguage)
    {
        $result = $expressionLanguage->evaluate('...');
        // ...
    }
}
```

表达式语法
-----

[](#表达式语法)

### 基本操作

[](#基本操作)

```
// 数学运算
ExpressionLanguage::evaluate('10 + 5');      // 15
ExpressionLanguage::evaluate('10 - 5');    // 5
ExpressionLanguage::evaluate('10 * 5');    // 50
ExpressionLanguage::evaluate('10 / 5');    // 2
ExpressionLanguage::evaluate('10 % 3');    // 1
ExpressionLanguage::evaluate('10 ** 2');   // 100 (幂运算)
```

### 比较和逻辑

[](#比较和逻辑)

```
// 比较
ExpressionLanguage::evaluate('a > b', ['a' => 10, 'b' => 5]);   // true
ExpressionLanguage::evaluate('a >= b', ['a' => 10, 'b' => 10]); // true
ExpressionLanguage::evaluate('a < b', ['a' => 5, 'b' => 10]);  // true
ExpressionLanguage::evaluate('a  1000 and is_vip',
    'free_shipping' => 'amount > 500 or is_vip',
];

$context = [
    'amount' => 1500,
    'is_vip' => true,
];

foreach ($rules as $name => $expression) {
    $result = ExpressionLanguage::evaluate($expression, $context);
    echo "$name: " . ($result ? '适用' : '不适用') . "\n";
}
```

### 2. 动态表单验证

[](#2-动态表单验证)

```
$validationRules = [
    'age' => 'age >= 18 and age
