Extract Arrays from Any Data Type with Laravel's Arr::from Method
Last updated on by Harris Raftopoulos
Laravel's new Arr::from method provides a unified approach to convert collections, objects, and other structures into arrays, handling various input types intelligently.
Convert different data types to arrays:
use Illuminate\Support\Arr; // From collectionsArr::from(collect(['status' => 'active'])); // ['status' => 'active'] // From Jsonable objectsArr::from($jsonable); // Decodes via Jsonable interface // From Arrayable objectsArr::from($arrayable); // Returns via toArray() method
Here's how you might use this in a configuration manager:
class ConfigurationManager{ public function processSettings($settings) { $array = Arr::from($settings); return $this->validateSettings($array); } public function combineConfigurations(...$configs) { return collect($configs) ->map(fn($config) => Arr::from($config)) ->reduce(fn($carry, $item) => array_merge($carry, $item), []); } public function sanitizeAndStore($configuration, array $schema) { $data = Arr::from($configuration); $validator = Validator::make($data, $schema); if ($validator->fails()) { throw new ValidationException($validator); } return $data; }} $manager = new ConfigurationManager(); $result = $manager->processSettings(collect(['cache' => 'redis']));$combined = $manager->combineConfigurations( collect(['database' => 'mysql']), new DatabaseConfig(), $cacheSettings);
The Arr::from method provides a consistent interface for array extraction, eliminating the need to check data types or call different methods based on the input structure.