An attempt to tame PHP constants for use as function/method flags
Find a file
2023-03-27 20:17:00 +02:00
src fix: remove test 2023-03-27 20:17:00 +02:00
.gitignore initial code commit 2023-03-16 17:04:11 +01:00
composer.json fix: composer psr4 (#1) 2023-03-17 10:29:00 +01:00
LICENSE Initial commit 2023-03-16 16:10:43 +01:00
README.md initial code commit 2023-03-16 17:04:11 +01:00

FunctionFlags

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

$my_flag = new FunctionFlags("MY_FLAG");
$other_flag = new FunctionFlags("OTHER_FLAG");

// Returns true if MY_FLAG is passed and present in $my_flag
function foo(int $flags = null): bool {
  return $my_flag->isset(MY_FLAG);
}

foo(MY_FLAG); // true
foo(OTHER_FLAG|MY_FLAG); // true
foo(OTHER_FLAG); // false
foo(); // false

Installation

Requires PHP 8.1 or newer

  1. Install composer package
composer require victorwesterlund/functionflags
  1. Include FunctionFlags in your project
use FunctionFlags/FunctionFlags
  1. Define some flags (Using static approach for demo)
FunctionFlags::define([
  "MY_FLAG",
  "OTHER_FLAG"
]);
  1. 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);
}
  1. 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);

Methods

Static Description
FunctionFlags::define(string|array) Flag(s) to define as string or array of string. This method must be called before using the flag(s).
FunctionFlags::isset(constant) The constant you wish to check is set on your function or method call.
Instanced Description
new FunctionFlags(string|array|null) Flag(s) to define as string or array of string. This method must be called before using the flag(s).
FunctionFlags->define(string|array) Flag(s) to define as string or array of string. This method must be called before using the flag(s).
FunctionFlags->isset(constant) The constant you wish to check is set on your function or method call.