gowork / safe
Type Safety Tools
Installs: 23 240
Dependents: 1
Suggesters: 0
Security: 0
Stars: 5
Watchers: 3
Forks: 1
Open Issues: 0
Requires
- php: ^7.4 || ^8.0
- dazet/type-utils: ^0.2
Requires (Dev)
- phpunit/phpunit: ^8.1
- symfony/console: ^5.0
- symfony/error-handler: ^5.0
- symfony/http-kernel: ^5.0
This package is auto-updated.
Last update: 2024-11-09 00:32:56 UTC
README
Safe accessors wraps unsafe or uncertain associative data structures and provides methods of safe type casting. Mainly for Symfony.
SafeAccessorTrait methods
bool(string $key, bool $default = false): bool
- casts value to
bool
(true, false, 0, 1) if possible - or throws
InvalidArgumentException
when value set but cannot be casted - or returns default when value not set
boolOrDefault(string $key, bool $default): bool
- casts value to
bool
(true, false, 0, 1) - or returns default
string(string $key, string $default = ''): string
- casts value to
string
if possible - or throws
InvalidArgumentException
when value set but cannot be casted - or returns default when value not set
stringNullable(string $key, ?string $default = null): ?string
- casts value to
string
if possible - or returns default when value not set or is
null
- or throws
InvalidArgumentException
when value notnull
but cannot be casted
stringOrNull(string $key): ?string
- casts value to
string
if possible - or returns
null
stringOrDefault(string $key, string $default): string
- casts value to
string
if possible - or returns default
int(string $key, int $default = 0): int
- casts value to
int
if possible - or throws
InvalidArgumentException
when value set but cannot be casted - or returns default when value not set
intNullable(string $key, ?int $default = null): ?int
- casts value to
int
if possible - or returns default when value not set or is
null
- or throws
InvalidArgumentException
when value notnull
but cannot be casted
intOrNull(string $key): ?int
- casts value to
int
if possible - or returns
null
intOrDefault(string $key, int $default): int
- casts value to
int
if possible - or returns default
float(string $key, float $default = 0): float
- casts value to
float
if possible - or throws
InvalidArgumentException
when value set but cannot be casted - or returns default when value not set
floatNullable(string $key, ?float $default = null): ?float
- casts value to
float
if possible - or returns default when value not set or is
null
- or throws
InvalidArgumentException
when value notnull
but cannot be casted
floatOrNull(string $key): ?float
- casts value to
float
if possible - or returns
null
floatOrDefault(string $key, float $default): float
- casts value to
float
if possible - or returns default
strings(string $key): array<int, string>
- casts value to array of strings if possible
- or throws
InvalidArgumentException
when some item cannot be casted
stringsFiltered(string $key): array<int, string>
- casts value to array of strings skipping items that cannot be casted
stringsForced(string $key, string $default = ''): array<int, string>
- casts value to array of strings replacing with default items that cannot be casted
ints(string $key): array<int, int>
- casts value to array of ints if possible
- or throws
InvalidArgumentException
when some item cannot be casted
intsFiltered(string $key): array<int, int>
- casts value to array of ints skipping items that cannot be casted
intsForced(string $key, int $default = ''): array<int, int>
- casts value to array of ints replacing with default items that cannot be casted
floats(string $key): array<int, float>
- casts value to array of floats if possible
- or throws
InvalidArgumentException
when some item cannot be casted
floatsFiltered(string $key): array<int, float>
- casts value to array of floats skipping items that cannot be casted
floatsForced(string $key, float $default = ''): array<int, float>
- casts value to array of floats replacing with default items that cannot be casted
array(string $key): SafeAssocArray
- casts value to associative array and wraps with
SafeAssocArray
- or throws
InvalidArgumentException
when value cannot be casted
list(string $key): SafeAssocList
- casts value to list of associative arrays and wraps with
SafeAssocList
- or throws
InvalidArgumentException
when value cannot be casted
Accessors
SafeAssocArray
$user = [ 'name' => 'John', 'age' => 18, 'sports' => ['football', 'handball'], ]; $safe = SafeAssocArray::from($user); $safe->string('name'); // 'John' $safe->int('age'); // 18 $safe->string('nickname', '--'); // '-' $safe->stringNullable('nickname'); // NULL $safe->string('nickname'); // InvalidArgumentException $safe->strings('sports'); // ['football', 'handball'] $safe->ints('sports'); // InvalidArgumentException
SafeConsoleInput
final class ExampleCommand extends Command { // ... protected function execute(InputInterface $input, OutputInterface $output): int { $arguments = SafeConsoleInput::arguments($input); // require string from argument $file = $arguments->string('name'); $options = SafeConsoleInput::options($input); // integer with default value $limit = $options->int('limit', 20); // optional integer value $pageOrNull = $options->intNullable('page'); // bool $isDryRun = $options->bool('dry-run', false); // string[] $tags = $options->strings('tag'); // int[] $tags = $options->ints('status'); } }
SafeRequest
final class ExampleAction extends Command { // ... public function __invoke(Request $request): Response { $safeRequest = SafeRequest::from($request); $query = $safeRequest->query(); $post = $safeReques->request(); $attributes = $safeReques->attributes(); $ip = $safeReques->ip(); $postId = $attributes->string('postId'); $tags = $post->strings('tags'); // ... } }