Combine conditions using AND and OR logic
mainBy default, chaining methods performs an AND operation. To perform OR operations or complex nested logic, use ConditionBuilder with the any() method.
// AND: Classes that implement Arrayable
Discover::in(__DIR__)->classes()->implementing(Arrayable::class)->get();
// OR: Classes OR Enums
Discover::in(__DIR__)
->any(
ConditionBuilder::create()->classes(),
ConditionBuilder::create()->enums()
)
->get();
// Complex: (Classes AND implementing Arrayable) OR (Enums AND implementing Stringable)
Discover::in(__DIR__)
->any(
ConditionBuilder::create()->exact(
ConditionBuilder::create()->classes()->implementing(Arrayable::class),
),
ConditionBuilder::create()->exact(
ConditionBuilder::create()->enums()->implementing(Stringable::class),
)
)
->get();