darvinstudio/darvin-utils
Darvin Utils is a small collection of Laravel/PHP utilities. Currently includes a Config Injector that injects configuration parameters into the DI container, simplifying configuration wiring and service setup.
Installation
composer require darvinstudio/darvin-utils
No publisher or service provider is required—utilities are statically accessible via the DarvinUtils facade.
First Use Case Quickly validate an email format or generate a slug:
use DarvinUtils\Facades\DarvinUtils;
// Validate email
$isValid = DarvinUtils::validateEmail('test@example.com');
// Generate slug
$slug = DarvinUtils::slugify('Hello World!');
Where to Look First
DarvinUtils\Facades\DarvinUtils (primary entry point).src/DarvinUtils namespace for methods.php artisan test (if tests exist) to see real-world usage examples.Data Sanitization
$cleanedInput = DarvinUtils::sanitizeInput($userInput, 'text');
String Manipulation
$truncated = DarvinUtils::truncate('Long string here', 10);
$reversed = DarvinUtils::reverse('hello');
Array Utilities
$flattened = DarvinUtils::flattenArray(['a' => ['b' => 1]]);
$diff = DarvinUtils::arrayDiff(['a', 'b'], ['b', 'c']);
Date/Time Helpers
$formatted = DarvinUtils::formatDate('2023-01-01', 'Y-m-d H:i');
$isFuture = DarvinUtils::isFutureDate('2025-01-01');
Integration with Laravel
public function rules()
{
return [
'email' => ['required', 'string', function ($attribute, $value, $fail) {
if (!DarvinUtils::validateEmail($value)) {
$fail('Invalid email format.');
}
}]
];
}
public function handle($request, Closure $next)
{
$request->merge(['slug' => DarvinUtils::slugify($request->title)]);
return $next($request);
}
No Dependency Injection
DarvinUtils::validateEmail() in a service container-bound class if you later need to mock it.Limited Error Handling
validateEmail() return booleans or sanitized values without exceptions. Handle edge cases explicitly:
if (!DarvinUtils::validateEmail($email)) {
throw new \InvalidArgumentException('Invalid email');
}
Undocumented Methods
Str::slug() over slugify()).Performance Overhead
flattenArray()) may be inefficient for large datasets. Benchmark before use in performance-critical paths.if (method_exists(DarvinUtils::class, 'methodName')) {
// Safe to call
}
vendor/darvinstudio/darvin-utils/src/DarvinUtils.php to verify behavior or extend functionality.Custom Utilities Extend the facade by binding additional methods in a service provider:
DarvinUtils::extend(function ($utils) {
$utils->customMethod = function ($input) {
return strtoupper($input);
};
});
Override Defaults Replace core methods by publishing and modifying the package’s config (if available) or by creating a decorator pattern.
Testing Since the package lacks tests, write your own:
public function testSlugify()
{
$this->assertEquals('hello-world', DarvinUtils::slugify('Hello World!'));
}
How can I help you explore Laravel packages today?