seyfahni/haikunator

Generate random words or phrases usable as IDs.

1.0.1 2023-01-23 16:39 UTC

This package is auto-updated.

Last update: 2025-08-23 22:06:36 UTC


README

This project was inspired by HaikunatorPHP and Jitsi.

It allows generation of human-friendly IDs.

Installation

composer require seyfahni/haikunator

Usage

As a consumer you can expect an Haikunator instance to be injected into your class.

To generate an id just call the haikunate() method:

use seyfahni\Haikunator\Haikunator;

/** @var Haikunator $haikunator */
$haikunator->haikunate();

Creating an instance via Haikunators

The Haikunators helper class contains methods for easy creation of common Haikunators:

use seyfahni\Haikunator\Haikunators;

$atroxHaikunator = Haikunators::atroxHaikunator();
$jitsiHaikunator = Haikunators::jitsiHaikunator();

Creating a Haikunator by hand

There are multiple implementation of the Haikunator interface provided. Usually you want to put a combination of WordListHaikunators and CharactersHaikunator into one AppendingHaikunator.

use seyfahni\Haikunator\AppendingHaikunator;
use seyfahni\Haikunator\CharactersHaikunator;
use seyfahni\Haikunator\ConstantHaikunator;
use seyfahni\Haikunator\MtRandIntegerGenerator;
use seyfahni\Haikunator\WordListHaikunator;

$numberGenerator = new MtRandIntegerGenerator();

# Generate IDs like my-useful-aHt
$haikunator = new AppendingHaikunator([
    new ConstantHaikunator('my'),
    new WordListHaikunator($numberGenerator, ['fancy', 'useful', 'modular']),
    new CharactersHaikunator($numberGenerator, 'Haikunator', 3),
    ], '-'
);

The IntegerGenerator interface is used by some Haikunator implementations so that any kind of number generation can be used via adapter implementation.

Extension

Use your own generation logic by implementing the Haikunator interface and using an instance of it via "creation by hand".