Skip to content

Latest commit

 

History

57 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aegisora Is Callable Rule

Code Coverage Badge Software License PHPStan Badge

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.


✨ Features

  • 🔹 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 → Result flow
  • 🔹 No raw booleans — only structured Result
  • 🔹 Safe execution via base Rule abstraction
  • 🔹 Convenient static factory method (create)
  • 🔹 Lightweight and predictable behavior

📦 Installation

composer require aegisora/is-callable-rule

🚀 Core Concept

This 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()

🏗️ Basic Usage

✅ Validate callable value

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
}

❌ Invalid value example

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
}

🧩 Factory Method

IsCallableRule::create();

Creates a new instance of IsCallableRule.


⚠️ Validation Rules

Validation internally uses PHP native function:

is_callable($value)

Additionally, the rule explicitly supports:

$value instanceof Closure

The rule returns:

  • valid Result → if value is callable
  • invalid Result → if value is not callable

No exceptions are thrown for unsupported types.


🏛️ Architecture

This package relies on aegisora/rule-contract.

Validation flow:

  1. validate() is called
  2. Context is passed
  3. executeValidate() is executed
  4. is_callable() check is performed
  5. A Result is returned

All logic is encapsulated within the base Rule abstraction.


⚖️ 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.

About

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.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages