victorwesterlund/functionflags

An attempt to tame PHP constants for use as function/method flags

1.1.0 2023-04-18 18:28 UTC

This package is auto-updated.

Last update: 2024-12-18 22:06:40 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

  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