tsdevelopment/doctrine-behaviors-hashidable

Add hashidable behaviour to your doctrine entities

v0.0.1 2020-07-03 16:00 UTC

This package is not auto-updated.

Last update: 2024-04-21 08:55:22 UTC


README

This PHP library provides traits and interfaces that add hashidable behaviour (known from youtube video IDs) to Doctrine entities.

Install

composer require tsdevelopment/doctrine-behaviors-hashidable

Usage

All you have to do is to define a Doctrine entity:

  • implement HashidableInterface interface
  • add HashidableTrait trait
<?php

declare(strict_types=1);

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use TSDevelopment\DoctrineBehaviorsHashidable\Contract\Entity\HashidableInterface;
use TSDevelopment\DoctrineBehaviorsHashidable\Traits\HashidableTrait;

/**
 * @ORM\Entity
 */
class HashidableEntity implements HashidableInterface
{
    use HashidableTrait;

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     * @var int
     */
    private $id;

    public function getId(): int
    {
        return $this->id;
    }
}

As default the id property will be used to create the hashId. But you can override it:

<?php

declare(strict_types=1);

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use TSDevelopment\DoctrineBehaviorsHashidable\Contract\Entity\HashidableInterface;
use TSDevelopment\DoctrineBehaviorsHashidable\Traits\HashidableTrait;

/**
 * @ORM\Entity
 */
class HashidableCustomGetterEntity implements HashidableInterface
{
    use HashidableTrait;

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     * @var int
     */
    private $customId;

    public function getCustomId(): int
    {
        return $this->customId;
    }

    public function getHashidableField(): string
    {
        return 'customId';
    }
}

Configuration

Internally the bundle uses https://github.com/roukmoute/hashids-bundle to generate hashids. See the configuration part for all possible options.