Is Callable Rule provides a simple and strict callable validation for the Aegisora ecosystem.
The package is built on top of aegisora/rule-contract and follows its validation architecture, ensuring predictable and safe behavior.
- 🔹 Minimalistic implementation with no extra dependencies
- 🔹 Strict callable validation using PHP native
is_callable - 🔹 Supports anonymous functions (
Closure) - 🔹 Fully compatible with Aegisora validation pipeline
- 🔹 Clear
Context → Resultflow - 🔹 No raw booleans — only structured
Result - 🔹 Safe execution via base
Ruleabstraction - 🔹 Convenient static factory method (
create) - 🔹 Lightweight and predictable behavior
composer require aegisora/is-callable-ruleThis package performs callable validation:
- accepts a value via
Context - checks whether the value is callable
- returns a standardized
Result
Supported values:
function () {}
static function () {}
'trim'
[$object, 'method']
[SomeClass::class, 'method']Unsupported values:
null
true
123
'not_existing_function'
new stdClass()use Aegisora\Rules\IsCallableRule;
use Aegisora\RuleContract\Models\Context;
$result = IsCallableRule::create()->validate(
Context::create(function () {
return true;
})
);
if ($result->isValid()) {
// value is callable
} else {
// value is not callable
}use Aegisora\Rules\IsCallableRule;
use Aegisora\RuleContract\Models\Context;
$result = IsCallableRule::create()->validate(
Context::create('not-callable')
);
if ($result->isValid()) {
// will not happen
} else {
// validation failed
}IsCallableRule::create();Creates a new instance of IsCallableRule.
Validation internally uses PHP native function:
is_callable($value)Additionally, the rule explicitly supports:
$value instanceof ClosureThe rule returns:
- valid
Result→ if value is callable - invalid
Result→ if value is not callable
No exceptions are thrown for unsupported types.
This package relies on aegisora/rule-contract.
Validation flow:
validate()is calledContextis passedexecuteValidate()is executedis_callable()check is performed- A
Resultis returned
All logic is encapsulated within the base Rule abstraction.
This package is open-source and licensed under the MIT License. See the LICENSE for details.
Contributions are welcome and greatly appreciated!. See the CONTRIBUTING for details.
If you find this project useful, please consider giving it a star on GitHub!
It helps the project grow and motivates further development.