kommerce-core icon indicating copy to clipboard operation
kommerce-core copied to clipboard

Using UuidInterface everywhere is painful

Open pdt256 opened this issue 8 years ago • 1 comments

The Uuid and UuidInterface classes do not offer much value in kommerce-core. They are only used to generate a uuid4 value and to convert from hex to bytes using the getBytes() method.

Example command converting a string to Uuid:

AddTagToProductCommand

final class AddTagToProductCommand implements CommandInterface
{
    /** @var UuidInterface */
    private $productId;

    /** @var UuidInterface */
    private $tagId;

    /**
     * @param string $productId
     * @param string $tagId
     */
    public function __construct($productId, $tagId)
    {
        $this->productId = Uuid::fromString($productId);
        $this->tagId = Uuid::fromString($tagId);
    }

An example usage inside a Twig template from kommerce-templates:

Chaining calls to get the hex value is painful:

{{ form.hidden('productId', product.id.hex ) }}

pdt256 avatar Jan 01 '17 03:01 pdt256

I suggest we use uuid's as strings throughout kommerce-core, kommerce-templates, and kommerce-laravel projects. The repository layer would need to do the conversion from string to bytes. This would be a very large refactor.

pdt256 avatar Jan 01 '17 03:01 pdt256