Do you use Laravel and fight the mixed signatures of config()
when performing static analysis?
Smpita/ConfigAs types your config calls for you.
This package wraps Smpita/TypeAs, a generalized PHP library useful on any PHP project employing static analysis or tight type enforcement.
You can install the package via composer:
composer require smpita/configas
Please see SIGNATURES for the list of current methods and signatures.
Pass a key
and it will throw a ConfigAsResolutionException
if the key
isn't of the given type.
use Smpita\ConfigAs\ConfigAs;
$typed = ConfigAs::int('config.key');
If you want to suppress throwing exceptions, provide a default.
use Smpita\ConfigAs\ConfigAs;
$typed = ConfigAs::int('config.key', 123);
class()
has a slightly different signature because you need to specify the class you are expecting.
use Smpita\ConfigAs\ConfigAs;
$typed = ConfigAs::class(Target::class, 'config.key');
You can still provide a default.
use Smpita\ConfigAs\ConfigAs;
$typed = ConfigAs::class(Target::class, 'config.key', new Target('default'));
If you would prefer to receive null
instead of having an exception thrown, each type method has a nullable counterpart.
use Smpita\ConfigAs\ConfigAs;
ConfigAs::nullableString('config.key') === null; // true
To keep things performant, types are only validated once and results are cached in static arrays for the lifetime of the request.
To guarantee a fresh value, you may use the fresh
methods that are available for each type.
use Smpita\ConfigAs\ConfigAs;
$typed = ConfigAs::freshString('config.key');
For each type, you can forget any given cached value.
use Smpita\ConfigAs\ConfigAs;
ConfigAs::forgetFloat('config.key');
You can flush the cache of a type.
use Smpita\ConfigAs\ConfigAs;
ConfigAs::flushFloats();
You can flush all keys.
use Smpita\ConfigAs\ConfigAs;
ConfigAs::flush();
SIGNATURES#resolver-registration
You can leverage the included Smpita\TypeAs library to create your own custom resolvers. For creation, global registration, and full instructions, see the library docs.
$typed = Smpita\ConfigAs::string('config.key', null, new CustomStringResolver);
There is a configAs()
helper method located in the Smpita\ConfigAs
namespace.
use function Smpita\ConfigAs\configAs;
$configAs = configAs();
$string = $configAs->string('config.string.key');
$array = $configAs->array('config.array.key');
Resolver methods have an associated helper method located in the Smpita\ConfigAs
namespace.
The helper method names follow the ConfigAs
method names, but are prepended by config
and are camelCased.
use function Smpita\ConfigAs\configString;
$typed = configString('config.key');
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.