Smart Cast - An elegant and type-safe library for intelligent type casting in PHP. Eliminate boilerplate code and work with data confidently!
- 🎯 Intuitive API - Simple and clear syntax
- 🛡️ Type Safety - Comprehensive validation and exception handling
- 🚀 Performance - Optimized conversions with minimal overhead
- 📦 Zero Dependencies - No external dependencies required
composer require sushi-market/smart-cast<?php
use DF\SmartCast\SmartCast;
use DF\SmartCast\NumberSign;
// Convert string to integer with strict type
$intValue = SmartCast::stringToInt('123', strictType: false); // Returns 123
// Convert with sign and zero validation
$positiveInt = SmartCast::stringToInt('456', sign: NumberSign::POSITIVE, acceptsZero: false);
// Convert to float with null validation
$floatValue = SmartCast::stringToFloat('123.45', acceptNull: false); // Returns 123.45
// Convert to boolean
$boolValue = SmartCast::stringToBoolean('true'); // Returns true
// Convert JSON-like array string
$array = SmartCast::stringToArray('[1,2,3]'); // Returns: [1, 2, 3]
// Convert delimited string to array
$array = SmartCast::stringToArray('1,2,3,4'); // Returns: [1, 2, 3, 4]
// Validate against array of allowed values
$status = SmartCast::ensureAllowedString(
value: 'foo',
allowedValues: ['foo', 'bar', 'baz']
); // Returns: 'foo'
// Validate against backed enum
$role = SmartCast::ensureAllowedString(
value: 'admin',
allowedValues: UserRoleEnum::class
); // Returns: 'admin'
// Decode base64-encoded JSON array
$array = SmartCast::base64ToArray('WzEsMiwzXQ=='); // Returns: [1, 2, 3]
// Decode base64-encoded JSON object
$data = SmartCast::base64ToArray('eyJmb28iOiJiYXIifQ=='); // Returns: ['foo' => 'bar']or use helpers
<?php
// Convert string to integer with strict type
$intValue = stringToInt('123', strictType: false); // Returns 123
// Convert with sign and zero validation
$positiveInt = stringToInt('456', sign: NumberSign::POSITIVE, acceptsZero: false);
// Convert to float with null validation
$floatValue = stringToFloat('123.45', acceptNull: false); // Returns 123.45
// Convert to boolean
$boolValue = stringToBoolean('true'); // Returns true
// Convert JSON-like array string
$array = stringToArray('[1,2,3]'); // Returns: [1, 2, 3]
// Convert delimited string to array
$array = stringToArray('1,2,3,4'); // Returns: [1, 2, 3, 4]
// Validate against array of allowed values
$status = ensureAllowedString(
value: 'foo',
allowedValues: ['foo', 'bar', 'baz']
); // Returns: 'foo'
// Validate against backed enum
$role = ensureAllowedString(
value: 'admin',
allowedValues: UserRoleEnum::class
); // Returns: 'admin'
// Decode base64-encoded JSON array
$array = base64ToArray('WzEsMiwzXQ=='); // Returns: [1, 2, 3]
// Decode base64-encoded JSON object
$data = base64ToArray('eyJmb28iOiJiYXIifQ=='); // Returns: ['foo' => 'bar']