Polyscope - The agent-first dev environment for Laravel

Onym

Onym stats

Downloads
101
Stars
36
Open Issues
0
Forks
1

View on GitHub →

Onym is a lightweight Laravel package designed to generate unique, structured, and meaningful filenames effortlessly.

Onym Icon

GitHub Workflow Status (main) Total Downloads Latest Version License

Onym - Flexible Filename Generator

A flexible Laravel package for generating filenames using various strategies and options.

πŸš€ Features

  • βœ… Flexible Filename Generation – Generate filenames dynamically using various strategies.
  • 🎲 Multiple Strategies – Supports random, uuid, timestamp, date, numbered, slug, and hash.
  • πŸ”§ Customizable Output – Specify filename, extension, and additional formatting options.
  • 🎯 Laravel-Friendly – Designed to work 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.

Installation

You can install the package via composer:

composer require blaspsoft/onym

You can publish the config file with:

php artisan vendor:publish --tag="onym-config"

Usage

Available Strategies

Random Strategy

Generates a random string of characters for the filename.

Options:

  • length (int): The length of the random string
    • Default: 16
    • Example: ['length' => 8] generates "a1b2c3d4.txt"
  • prefix (string): String to prepend to the filename
    • Default: ''
    • Example: ['prefix' => 'temp_'] generates "temp_a1b2c3d4.txt"
  • suffix (string): String to append before the extension
    • Default: ''
    • Example: ['suffix' => '_draft'] generates "a1b2c3d4_draft.txt"
use Blaspsoft\Onym\Facades\Onym;
 
// Generate an 8-character random filename with prefix and suffix
Onym::make(strategy: 'random', options: [
'length' => 8,
'prefix' => 'temp_',
'suffix' => '_draft'
]);
// Result: "temp_a1b2c3d4_draft.txt"
 
// You can also use the random method directly
Onym::random(string $extension, ?array $options = [])

UUID Strategy

Generates a UUID v4 (universally unique identifier) for the filename.

Options:

  • prefix (string): String to prepend to the filename
    • Default: ''
    • Example: ['prefix' => 'id_'] generates "id_123e4567-e89b-12d3-a456-426614174000.txt"
  • suffix (string): String to append before the extension
    • Default: ''
    • Example: ['suffix' => '_backup'] generates "123e4567-e89b-12d3-a456-426614174000_backup.txt"
use Blaspsoft\Onym\Facades\Onym;
 
// Generate a UUID filename with prefix and suffix
Onym::make(strategy: 'uuid', options: [
'prefix' => 'id_',
'suffix' => '_backup'
]);
// Result: "id_123e4567-e89b-12d3-a456-426614174000_backup.txt"
 
// You can also use the uuid method directly
Onym::uuid(string $extension, ?array $options = [])

Timestamp Strategy

Adds a timestamp to the filename using PHP's DateTime formatting.

Options:

  • format (string): PHP DateTime format string
    • Default: 'Y-m-d_H-i-s'
    • Common formats:
      • 'Y-m-d_H-i-s' β†’ "2024-03-15_14-30-00"
      • 'YmdHis' β†’ "20240315143000"
      • 'U' β†’ Unix timestamp (e.g., "1710506400")
  • prefix (string): String to prepend to the filename
    • Default: ''
    • Example: ['prefix' => 'log_']
  • suffix (string): String to append before the extension
    • Default: ''
    • Example: ['suffix' => '_archive']
use Blaspsoft\Onym\Facades\Onym;
 
// Using timestamp with prefix and suffix
Onym::make('document', 'pdf', 'timestamp', [
'format' => 'Y-m-d_H-i-s',
'prefix' => 'log_',
'suffix' => '_archive'
]);
// Result: "log_2024-03-15_14-30-00_document_archive.pdf"
 
// You can also use the timestamp method directly
Onym::timestamp(string $defaultFilename, string $extension, ?array $options = [])

Date Strategy

Similar to timestamp but focused on date-only formats.

Options:

  • format (string): PHP DateTime format string
    • Default: 'Y-m-d'
    • Common formats:
      • 'Y-m-d' β†’ "2024-03-15"
      • 'Ymd' β†’ "20240315"
      • 'Y/m/d' β†’ "2024/03/15"
  • prefix (string): String to prepend to the filename
    • Default: ''
    • Example: ['prefix' => 'dated_']
  • suffix (string): String to append before the extension
    • Default: ''
    • Example: ['suffix' => '_version']
use Blaspsoft\Onym\Facades\Onym;
 
// Using date with prefix and suffix
Onym::make('document', 'pdf', 'date', [
'format' => 'Y-m-d',
'prefix' => 'dated_',
'suffix' => '_version'
]);
// Result: "dated_2024-03-15_document_version.pdf"
 
// You can also use the date method directly
Onym::date(string $defaultFilename, string $extension, ?array $options = [])

Numbered Strategy

Adds a number to the filename.

Options:

  • number (int): The number to append to the filename
    • Default: 1
    • Example: ['number' => 5]
  • prefix (string): String to prepend to the filename
    • Default: ''
    • Example: ['prefix' => 'rev_']
  • suffix (string): String to append before the extension
    • Default: ''
    • Example: ['suffix' => '_final']
use Blaspsoft\Onym\Facades\Onym;
 
// Adding numbers with prefix and suffix
Onym::make('document', 'pdf', 'numbered', [
'number' => 5,
'prefix' => 'rev_',
'suffix' => '_final'
]);
// Result: "rev_document_5_final.pdf"
 
// You can also use the numbered method directly
Onym::numbered(string $defaultFilename, string $extension, ?array $options = [])

Slug Strategy

Converts the filename to a URL-friendly slug.

Options:

  • prefix (string): String to prepend to the filename
    • Default: ''
    • Example: ['prefix' => 'post_']
  • suffix (string): String to append before the extension
    • Default: ''
    • Example: ['suffix' => '_draft']
use Blaspsoft\Onym\Facades\Onym;
 
// Converting strings to slugs with prefix and suffix
Onym::make('My Document Name', 'pdf', 'slug', [
'prefix' => 'post_',
'suffix' => '_draft'
]);
// Result: "post_my-document-name_draft.pdf"
 
// You can also use the slug method directly
Onym::slug(string $defaultFilename, string $extension, ?array $options = [])

Hash Strategy

Generates a hash of the filename using various algorithms.

Options:

  • algorithm (string): The hashing algorithm to use
    • Default: 'md5'
    • Available algorithms:
      • 'md5' (32 characters)
      • 'sha1' (40 characters)
      • 'sha256' (64 characters)
      • Any algorithm supported by PHP's hash() function
  • prefix (string): String to prepend to the filename
    • Default: ''
    • Example: ['prefix' => 'hash_']
  • suffix (string): String to append before the extension
    • Default: ''
    • Example: ['suffix' => '_checksum']
use Blaspsoft\Onym\Facades\Onym;
 
// Using hash with prefix and suffix
Onym::make('document', 'pdf', 'hash', [
'algorithm' => 'md5',
'prefix' => 'hash_',
'suffix' => '_checksum'
]);
// Result: "hash_86985e105f79b95d6bc918fb45ec7727_checksum.pdf"
 
// You can also use the hash method directly
Onym::hash(string $defaultFilename, string $extension, ?array $options = [])

Global Configuration

You can set default values for all strategies in your config/onym.php file:

return [
// Default filename when none is provided
'default_filename' => 'file',
 
// Default extension when none is provided
'default_extension' => 'txt',
 
// Default strategy when none is specified
'strategy' => 'random',
 
// Default options for all strategies
'options' => [
 
'random' => [
'length' => 16,
'prefix' => '',
'suffix' => '',
],
 
'timestamp' => [
'format' => 'Y-m-d_H-i-s',
'prefix' => '',
'suffix' => '',
],
 
'date' => [
'format' => 'Y-m-d',
'prefix' => '',
'suffix' => '',
],
 
'numbered' => [
'number' => 1,
'separator' => '_',
'prefix' => '',
'suffix' => '',
],
 
'hash' => [
'algorithm' => 'md5',
'length' => 16,
'prefix' => '',
'suffix' => '',
],
],
];

These defaults can be overridden on a per-call basis using the options parameter in the make() and in all strategy methods.

License

Blasp is open-sourced software licensed under the MIT license.

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Blaspsoft Onym Related Articles

Onym - Flexible Filename Generator image

Onym - Flexible Filename Generator

Read article
Statamic logo

Statamic

The drop-in ready Laravel CMS you’re been waiting for. Go full-stack or headless, flat file or database – it’s up to you.

Statamic
Tinkerwell logo

Tinkerwell

The must-have code runner for Laravel developers. Tinker with AI, autocompletion and instant feedback on local and production environments.

Tinkerwell
Securing Laravel logo

Securing Laravel

The essential security resource for Laravel devs, covering everything you need to keep your apps secure. Sign up to receive weekly security tips and monthly in depth articles, diving deep into security concepts you need to know!

Securing Laravel
CodeKudu logo

CodeKudu

Stand-ups, Retrospectives, and 360Β° Feedback for the entire team. 50% off with code LARAVELNEWS.

CodeKudu
Harpoon: Next generation time tracking and invoicing logo

Harpoon: Next generation time tracking and invoicing

The next generation time-tracking and billing software that helps your agency plan and forecast a profitable future.

Harpoon: Next generation time tracking and invoicing
Lucky Media logo

Lucky Media

Get Lucky Now - the ideal choice for Laravel Development, with over a decade of experience!

Lucky Media