<?php
//Hi, this is actually possible already in PHP already, and doesn't need any extra functionality.
// You can specify a function to be called to combine multiple arguments into a single
// value inside case statements like this:
function f($value, $access = null) {
$knownAccessTypes = [
'read-only',
'read-write'
];
if (in_array($access, $knownAccessTypes)) {
return $value.$access;
}
return $value;
}
function multiSwitchFunction($value, $access = null) {
switch (f($value, $access)) {
case f('a', 'read-only'): return 'a r';
case f('a', 'read-write'): return 'a w';
case f('a'): return 'a default';
case f('b', 'read-only'): return 'b r';
case f('b', 'read-write'): return 'b w ';
case f('c', 'read-only'): return 'c r';
case f('c', 'read-write'): return 'c w';
case f('d', 'read-only'): return 'd r';
case f('d', 'read-write'): return 'd w' ;
default: return "unknown";
}
}
var_dump(multiSwitchFunction('a', 'read-write'));
var_dump(multiSwitchFunction('a', 'foobar'));
var_dump(multiSwitchFunction('d', 'read-write'));
var_dump(multiSwitchFunction('d', 'foobar'));