Onym is a flexible Laravel package created by the fine folks at Blaspsoft to generate filenames using various strategies and options.
Main Features
- Flexible Filename Generation: Generate filenames dynamically using various strategies.
- Multiple Strategies: Supports
random
,uuid
,timestamp
,date
,numbered
,slug
, andhash
. - Customizable Output: You can specify the filename, extension, and any additional formatting options you need.
- Laravel-Friendly: Works seamlessly with Laravel's filesystem and configuration.
- Human-Readable & Unique Names: Ensures filenames are structured, collision-free, and easy to understand.
- Configurable Defaults: Define global settings in
config/onym.php
for consistency across your application. - Extensible & Developer-Friendly: Easily add custom filename strategies or modify existing ones.
Examples
You can generate filenames using Onym::make()
and pass the default filename, extension, strategy, and an array of options. For example, when using the Timestamp Strategy with a prefix and suffix:
use Blaspsoft\Onym\Facades\Onym; // Using timestamp with prefix and suffixOnym::make('document', 'pdf', 'timestamp', [ 'format' => 'Y-m-d_H-i-s', 'prefix' => 'letter_', 'suffix' => '_signed']);// Result: "letter_2025-03-27_14-30-00_document_signed.pdf"
You can also use the strategy method directly. For example:
// You can also use the timestamp method directlyOnym::timestamp(string $defaultFilename, string $extension, ?array $options = [])
Here is an example of the Numbered Strategy:
use Blaspsoft\Onym\Facades\Onym; // Adding numbers with prefix and suffixOnym::make('invoice', 'pdf', 'numbered', [ 'number' => 200, 'prefix' => 'LN_', 'suffix' => '_paid']);// Result: "LN_invoice_200_paid.pdf"
Give this package a try in your next project by installing it using Composer:
composer require blaspsoft/onym
Learn more about this package and view the source code on GitHub.