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

Decorator Laravel Package

cleentfaar/decorator

Laravel/PHP decorator helper to wrap classes and add behavior without modifying the original. Provides a lightweight Decorator pattern implementation for cleaner, composable enhancements and feature extensions in your application.

View on GitHub
Deep Wiki
Context7

A PHP library to decorate your values for use in templates and other rendering purposes

Frequently asked questions about Decorator
How does this decorator package differ from Laravel’s built-in helpers like `Str::ucfirst()` or Carbon?
This package implements the decorator pattern to wrap objects dynamically, allowing you to add behavior like formatting, validation, or transformation without altering the original class. Unlike Laravel’s helpers, which are static and limited to specific tasks, decorators can chain behaviors (e.g., truncate text *and* uppercase it) and work with nested data structures. However, for simple use cases, Laravel’s native tools are often sufficient.
Will this work with Laravel 9.x or PHP 8.x, or do I need to fork it?
The package was last updated in 2014 and may not support PHP 8.x features like named arguments or strict typing. Laravel 9.x’s stricter requirements could also cause compatibility issues. You’d likely need to fork and modernize it, or test thoroughly in a staging environment before adoption. Check the [GitHub issues](https://github.com/cleentfaar/decorator/issues) for unresolved PHP 7.4+ problems.
Can I use this for API responses (e.g., JSON:API formatting) or just Blade templates?
Yes, decorators can transform data before serialization—whether for Blade templates, JSON responses, or XML. For APIs, you’d typically apply decorators to your Eloquent models or DTOs before returning them in `Response::json()`. However, for simple APIs, Laravel’s `collect()` or custom array transformations may be lighter alternatives.
What’s the performance impact of using decorators compared to native Laravel methods?
Decorators introduce indirection, which can add minor overhead, especially for high-throughput APIs. For most template use cases, the difference is negligible. Benchmark with tools like Laravel Debugbar or Blackfire to compare against alternatives like Blade directives or Carbon. If performance is critical, prefer native methods or traits.
How do I install and register this package in Laravel?
Install via Composer: `composer require cleentfaar/decorator`. Register the service provider in `config/app.php` if required (check the README for Laravel 5.x vs. 8.x differences). For Laravel 9.x+, you may need to manually bind decorators to the container or fork the package. No facade is provided by default, so you’ll likely use it as a standalone class.
Are there any known conflicts with other Laravel packages (e.g., Livewire, Spatie)?
The package is lightweight and shouldn’t conflict with most Laravel packages, but its age means it may not account for modern autoloading or namespace conventions. Test with Livewire or Spatie packages in a clean environment first. If using Blade, ensure decorator methods don’t clash with existing directives or helpers.
What’s the best way to test this package before production use?
Start with a proof-of-concept: create a simple decorator (e.g., for uppercase text) and test it in a Blade template or API endpoint. Compare performance and readability against native alternatives. Use PHPUnit to mock decorated objects and verify behavior. Since the package lacks tests, focus on edge cases like nested arrays or circular references.
Can I use decorators for database queries or queue jobs, or just rendering?
Decorators are designed for presentation logic—transforming data *after* it’s fetched or processed. They’re not suitable for database queries (use Eloquent scopes or query builders) or queue jobs (use job payloads or events). For example, you’d decorate a model *after* retrieval, not during the query itself.
What alternatives should I consider before adopting this package?
For simple formatting, use Laravel’s built-in tools: `Str::`, `Carbon`, or `collect()`. For complex nested data, consider custom traits, helper classes, or packages like `spatie/array-to-xml`. If you need reusable decorators, traits or composition (e.g., decorating a DTO) might be cleaner. Avoid this package if maintenance is a concern—it’s abandoned and may not evolve with Laravel.
How do I handle nested arrays or objects with decorators? Does this package support recursive decoration?
The package likely supports recursive decoration (check the README for methods like `decorateRecursive()`), but its 2014 release means it may not handle modern PHP types (e.g., iterables) safely. Test with deeply nested data structures and validate edge cases like circular references. For complex cases, a custom solution or a fork with stricter type hints may be needed.
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.
besmartand-pro/php-quality-config
sentix/ai-chatbot
terminal42/code-quality-tools
codifyo/ts-generator-bundle
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity