victorwesterlund / functionflags
An attempt to tame PHP constants for use as function/method flags
1.1.0
2023-04-18 18:28 UTC
README
A library that aims to make it a bit easier to use PHP constants as function/method flags.
Flags can be defined and checked globally by calling FunctionFlags
's static methods.
use FunctionFlags/FunctionFlags // Define global flags for use anywhere for this runtime FunctionFlags::define([ "MY_FLAG", "OTHER_FLAG" ]); // Returns true if MY_FLAG is passed function foo(int $flags = null): bool { return FunctionFlags::isset(MY_FLAG); } foo(MY_FLAG); // true foo(OTHER_FLAG|MY_FLAG); // true foo(OTHER_FLAG); // false foo(); // false
Flags can also be scoped to a class by creating a new FunctionFlags
instance. Only flags defined in this instance will be matched
use FunctionFlags/FunctionFlags $flags1 = new FunctionFlags(["FOO", "BAR"]); $flags2 = new FunctionFlags(["BAR", "BIZ"]); // Returns true if FOO is passed and present in $flags1 function foo(int $flags = null): bool { return $flags2->isset(FOO); } foo(FOO); // true foo(FOO|BIZ); // true foo(BIZ); // false foo(); // false
Installation
Requires PHP 8.1 or newer
- Install composer package
composer require victorwesterlund/functionflags
- Include FunctionFlags in your project
use FunctionFlags/FunctionFlags
- Define some flags (Using static approach for demo)
FunctionFlags::define([ "MY_FLAG", "OTHER_FLAG" ]);
- Add a function which accepts flags
// 1. If your function takes more than 1 argument. The "flags" variable MUST be the last. // 2. It's recommended to make your "flags" variable default to some value if empty to make flags optional. function foo($bar = null, int $flags = null): bool { return FunctionFlags::isset(MY_FLAG); }
- Use flags in function calls
// Your function can now accept flags. One or many using the Union operator `|` foo("hello world", OTHER_FLAG|MY_FLAG);