Cel PHP
#A Common Expression Language Implementation in PHP
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
- Equality and Comparison - Numeric comparisons and null equality
- Optional Values - Work with values that may be absent
- 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