adachsoft/usefultoolbox-bundle
Laravel bundle offering a collection of useful toolbox utilities to speed up development: handy helpers, reusable components, and common routines packaged for easy installation and use across projects.
Installation
composer require adachsoft/usefultoolbox-bundle
Add to config/bundles.php:
return [
// ...
Adachsoft\UsefulToolboxBundle\AdachsoftUsefulToolboxBundle::class => ['all' => true],
];
First Use Case
The bundle provides utility classes under Adachsoft\UsefulToolboxBundle\Utils\.
Example: Use the StringUtils for basic string operations:
use Adachsoft\UsefulToolboxBundle\Utils\StringUtils;
$sanitized = StringUtils::slugify('Hello World!');
// Returns: 'hello-world'
Where to Look First
Utils namespace for available classes (e.g., ArrayUtils, DateUtils, FileUtils).tests/ for usage examples and edge cases.config/packages/adachsoft_usefultoolbox.yaml.String Manipulation
Use StringUtils for consistent formatting (e.g., slugs, truncation, or case conversion):
$truncated = StringUtils::truncate('Long string...', 10);
// Returns: 'Long stri...'
Array Operations
Leverage ArrayUtils for deep merging, flattening, or diffing:
$merged = ArrayUtils::deepMerge(['a' => 1], ['a' => 2, 'b' => 3]);
// Returns: ['a' => 2, 'b' => 3]
Date Handling
Use DateUtils for timezone-aware operations:
$formatted = DateUtils::format(new \DateTime(), 'Y-m-d H:i:s');
File System
FileUtils simplifies path resolution and file operations:
$path = FileUtils::getProjectRoot() . '/public/uploads';
Service Container: Bind utilities to Symfony’s container for DI:
# config/services.yaml
services:
Adachsoft\UsefulToolboxBundle\Utils\StringUtils: ~
Then inject via constructor:
public function __construct(private StringUtils $stringUtils) {}
Custom Extensions: Extend utility classes by overriding methods or creating decorators.
Command-Line Tools: Use ConsoleUtils for CLI output formatting:
ConsoleUtils::success('Operation completed!');
Namespace Conflicts
The bundle uses Adachsoft\UsefulToolboxBundle\Utils\*. Ensure no naming collisions with your project’s utilities.
Configuration Overrides
Default configs (e.g., slugify_separator) may not match expectations. Override in adachsoft_usefultoolbox.yaml:
adachsoft_usefultoolbox:
string_utils:
slugify_separator: '-'
FileUtils Caching
FileUtils::getProjectRoot() caches paths. Clear cache if paths change dynamically:
FileUtils::clearCache();
DateUtils Timezones Defaults to system timezone. Explicitly set in methods:
DateUtils::format($date, 'Y-m-d', 'Europe/Berlin');
ADACHSOFT_TOOLBOX_DEBUG=true in .env for verbose logs.php bin/phpunit to verify edge cases (e.g., empty arrays in ArrayUtils).Custom Utilities
Create a subclass (e.g., AppUtils extends StringUtils) and override methods:
class AppUtils extends StringUtils {
public static function customSlugify(string $string): string {
return parent::slugify($string) . '-app';
}
}
Event Listeners Hook into bundle events (if documented) to extend functionality. Example:
// src/EventListener/ToolboxListener.php
public static function getSubscribedEvents(): array {
return [
AdachsoftUsefulToolboxEvents::PRE_SLUGIFY => 'onPreSlugify',
];
}
Twig Integration Expose utilities to Twig for templating:
{{ app.usefultoolbox.string_utils.slugify('Hello') }}
Requires registering the bundle’s Twig extension in services.yaml.
How can I help you explore Laravel packages today?