aegisora / in-array-rule
Rule-based in-array validation in Aegisora ecosystem
Requires
- php: >=7.4
- aegisora/rule-contract: ^1.0
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^9.6
- squizlabs/php_codesniffer: ^4.0
README
In-Array Rule provides a simple, rule-based array membership validation implementation for the Aegisora ecosystem.
It is built on top of aegisora/rule-contract (https://github.com/Aegisora/rule-contract) and follows its strict validation architecture, ensuring consistent and predictable behavior across applications.
✨ Features
- 🔹 Lightweight and dependency-free (except rule contract)
- 🔹 Strict and soft comparison modes (
in_arraybehavior) - 🔹 Fully compatible with Aegisora validation pipeline
- 🔹 Strict
Context → Resultvalidation flow - 🔹 No raw booleans — only structured results
- 🔹 Safe execution via base
Ruleabstraction - 🔹 Simple factory API (
create,createStrict,createSoft) - 🔹 Ready to use out of the box
📦 Installation
composer require aegisora/in-array-rule
🚀 Core Concept
This package implements a single validation rule:
- accepts a value via
Context - checks whether it exists in a predefined array
- returns a standardized
Result
Internally uses PHP native function:
in_array($value, $array, $strict)
🏗️ Basic Usage
use Aegisora\Rules\InArrayRule; use Aegisora\RuleContract\Models\Context; $rule = InArrayRule::create(['apple', 'banana', 'orange',]); $result = $rule->validate(Context::create('banana')); if ($result->isValid()) { // value exists in array } else { // value not found }
🔒 Strict vs Soft Mode
Strict mode (default)
$rule = InArrayRule::create([1, 2, 3,]); $rule->validate(Context::create('1')); // false
Strict comparison checks type as well.
Soft mode
$rule = InArrayRule::createSoft([1, 2, 3,]); $rule->validate(Context::create('1')); // true
Allows loose comparison (== behavior).
🧩 Factory Methods
InArrayRule::create($array); // strict by default InArrayRule::createStrict($array); // explicit strict InArrayRule::createSoft($array); // loose comparison
🏛️ Architecture
This package relies on aegisora/rule-contract (https://github.com/Aegisora/rule-contract).
Flow:
validate()is calledContextis passed inexecuteValidate()runsin_arraycheck is executedResultis returned
All logic is safely handled by Rule contract.
⚖️ License
This package is open-source and licensed under the MIT License. See the LICENSE for details.
🌱 Contributing
Contributions are welcome and greatly appreciated!. See the CONTRIBUTING for details.
🌟 Support
If you find this project useful, please consider giving it a star on GitHub!
It helps the project grow and motivates further development.