carthage-software / cel-php
A PHP Common Expression Language Implementation
Installs: 75
Dependents: 0
Suggesters: 0
Security: 0
Stars: 41
Watchers: 3
Forks: 2
Open Issues: 2
pkg:composer/carthage-software/cel-php
Requires
- php: ~8.4 || ~8.5
- ext-bcmath: *
- ext-intl: *
- azjezz/psl: ~3.2 || ~4.0
- psr/simple-cache: ^3.0
Requires (Dev)
- ext-decimal: *
- carthage-software/mago: ^1.0.0-beta.34
- infection/infection: ^0.31.2
- php-coveralls/php-coveralls: ^2.8
- phpbench/phpbench: ^1.4
- phpunit/phpunit: ^12.3
- symfony/expression-language: ^7.3
This package is auto-updated.
Last update: 2025-12-11 10:23:19 UTC
README
This repository contains a PHP implementation of the Common Expression Language (CEL).
Table of Contents
- Documentation
- Example
- Specification Compliance
- License
- Security Policy
- Code of Conduct
- Contributing
- Development
Documentation
- Getting Started - Installation, basic usage, and core concepts
- Standard Extensions Reference - Available functions and operators
- Caching - Improve performance with caching
- Custom Functions - Extend CEL with your own functions
- Custom Operators - Add custom binary and unary operators
- Value Resolvers - Support custom PHP types in CEL
Quick Example
use Cel; // Simple expression evaluation $result = Cel\evaluate('1 + 2'); echo $result->getRawValue(); // Output: 3 // With variables $result = Cel\evaluate('user.age >= 18', ['user' => ['age' => 25]]); echo $result->getRawValue(); // Output: true
See the examples/ directory for more usage examples.
Specification Compliance
CEL-PHP is a production-ready, fully spec-compliant implementation of the Common Expression Language specification. All core language features, operators, macros, and standard library functions are implemented and tested.
License
This project is licensed under the terms of the LICENSE file.
Security Policy
For information on security vulnerabilities and how to report them, please refer to our SECURITY.md.
Code of Conduct
Please review our CODE_OF_CONDUCT.md for expected behavior and guidelines for participation.
Acknowledgments
This project was developed by Carthage Software and is fully funded by Buhta.
We extend our sincere gratitude to Buhta for their generous support of open-source software. Their commitment to the PHP ecosystem makes projects like this possible.
Contributing
We welcome contributions! Please see our CONTRIBUTING.md for details on how to get started.
Development
This project uses just for task automation.
Justfile Recipes
You can see all available commands by running just --list. Some common recipes include:
just install: Installs project dependencies.just test: Runs the test suite.just lint: Runs linting checks.just verify: Runs all checks (tests, linting, etc.) to ensure code quality. Always runjust verifybefore pushing any changes.
Local Setup
To get started with local development, you'll need to install just and typos.
Installing Just:
If you have Rust and Cargo installed, you can install just via Cargo:
cargo install just
Alternatively, you can find other installation methods in the Just documentation.
Installing Typos:
If you have Rust and Cargo installed, you can install typos via Cargo:
cargo install typos-cli
After installing just and typos, you can install the project dependencies and run verification checks:
just install just verify