for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace BEAR\Resource;
use BEAR\Resource\Exception\ParameterException;
use Ray\Di\InjectorInterface;
use function ltrim;
use function preg_replace;
use function strtolower;
final class QueryProp
{
/**
* @param array<string, mixed> $query
*
* @return mixed
*/
public function getProp(string $varName, array $query, InjectorInterface $injector): mixed
if (isset($query[$varName])) {
return $query[$varName];
}
// try camelCase variable name
$snakeName = ltrim(strtolower((string) preg_replace('/[A-Z]/', '_\0', $varName)), '_');
if (isset($query[$snakeName])) {
return $query[$snakeName];
unset($injector);
throw new ParameterException($varName);