Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Dict Laravel Package

php-standard-library/dict

Utility functions for working with PHP associative arrays (“dicts”): create, map, filter, and transform collections while preserving keys. Lightweight helpers from PHP Standard Library for cleaner, safer array manipulation.

View on GitHub
Deep Wiki
Context7

Functions for creating and transforming associative arrays with preserved keys

Frequently asked questions about Dict
How does Dict compare to Laravel Collections for associative arrays?
Dict is a lightweight alternative focused solely on associative arrays with key preservation, while Laravel Collections offer broader functionality (e.g., lists, functional programming). Use Dict for simple key-value operations where you want explicit intent and reduced overhead, or Collections for complex data transformations.
Can I use Dict with Laravel’s Eloquent models for dynamic attributes?
Yes, Dict works well with Eloquent. You can use it to manage dynamic attributes or configuration by wrapping arrays in a Dict instance, ensuring type safety and structured access. For example, replace `$model->attributes['custom']` with `dict->get('custom')` to enforce consistency.
What Laravel versions does Dict support, and are there any breaking changes?
Dict is framework-agnostic and works with any Laravel version (5.8+). It has no Laravel-specific dependencies, so updates align with PHP version support. Check the [PHP Standard Library docs](https://php-standard-library.dev) for version-specific notes, but no Laravel-breaking changes exist.
How do I install and autoload Dict in a Laravel project?
Run `composer require php-standard-library/dict` to install. Dict follows PSR-4 autoloading, so no additional configuration is needed. Place it in your `composer.json` under `require` and run `composer dump-autoload` if autoloading issues arise.
Does Dict support nested associative arrays, and how do I handle them?
Yes, Dict supports nested structures. Use methods like `dict->get('nested.key')` or `dict->set('nested.key', $value)` for dot notation. For deep transformations, chain operations (e.g., `dict->map('nested', fn($item) => ...)`). Test edge cases like circular references manually.
Can Dict replace Laravel’s config arrays for cleaner access?
Absolutely. Wrap your `config/` arrays in Dict to enforce structured access (e.g., `dict->get('app.timezone')` instead of `$config['app.timezone']`). This reduces undefined index errors and makes refactoring easier. Use `Dict::fromArray(config('app'))` to convert existing configs.
How does Dict handle serialization for API responses or caching?
Dict implements `JsonSerializable` and `Arrayable` interfaces out of the box, so it works seamlessly with Laravel’s JSON responses and cache drivers. For custom serialization, extend the class or use `dict->toArray()` or `dict->jsonSerialize()` methods.
Are there performance concerns when using Dict over raw arrays in Laravel?
Dict adds minimal overhead—microbenchmarks show negligible differences for most use cases. For performance-critical paths (e.g., queue jobs), test with `Dict` vs. raw arrays. The tradeoff is improved readability and maintainability, which often outweighs micro-optimizations.
How can I enforce Dict usage across a Laravel team?
Start with opt-in adoption in new features, then enforce via static analysis (e.g., PHPStan rules) or code reviews. Document the benefits (e.g., reduced undefined index errors) and provide migration guides. For legacy code, use traits or mixins to gradually replace raw arrays.
What alternatives exist for structured array manipulation in Laravel?
Alternatives include Laravel Collections (for broader functionality), Symfony’s OptionsResolver (for validation), or custom wrappers. Dict stands out for its simplicity, focus on key preservation, and lack of Laravel-specific dependencies. Choose based on your need for abstraction vs. performance.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
ecotone/kafka
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata